You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wagtail/Django多帧动态GIF上传失败:格式字符错误求助

问题描述

已按文档要求安装Wagtail及所有依赖(为支持GIF已安装Wand和ImageMagick),但上传多帧GIF时出现错误,低帧GIF可正常使用,怀疑存在未文档化的配置缺失。

错误信息
2022-08-23 10:29:53,630 ERROR [django.request:241] log 73 140094513477440 Internal Server Error: /admin/images/multiple/add/
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
File "/usr/local/lib/python3.8/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python3.8/site-packages/django/views/decorators/cache.py", line 62, in _wrapped_view_func
response = view_func(request, *args, **kwargs)
File "/usr/local/lib/python3.8/site-packages/wagtail/admin/urls/__init__.py", line 161, in wrapper
return view_func(request, *args, **kwargs)
File "/usr/local/lib/python3.8/site-packages/wagtail/admin/auth.py", line 182, in decorated_view
response = view_func(request, *args, **kwargs)
File "/usr/local/lib/python3.8/site-packages/django/views/generic/base.py", line 84, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python3.8/site-packages/django/utils/decorators.py", line 46, in _wrapper
return bound_method(*args, **kwargs)
File "/usr/local/lib/python3.8/site-packages/django/views/decorators/vary.py", line 21, in inner_func
response = func(*args, **kwargs)
File "/usr/local/lib/python3.8/site-packages/wagtail/admin/views/generic/multiple_upload.py", line 44, in dispatch
return super().dispatch(request)
File "/usr/local/lib/python3.8/site-packages/wagtail/admin/views/generic/permissions.py", line 36, in dispatch
return super().dispatch(request, *args, **kwargs)
File "/usr/local/lib/python3.8/site-packages/django/views/generic/base.py", line 119, in dispatch
return handler(request, *args, **kwargs)
File "/usr/local/lib/python3.8/site-packages/wagtail/admin/views/generic/multiple_upload.py", line 144, in post
if form.is_valid():
File "/usr/local/lib/python3.8/site-packages/django/forms/forms.py", line 205, in is_valid
return self.is_bound and not self.errors
File "/usr/local/lib/python3.8/site-packages/django/forms/forms.py", line 200, in errors
self.full_clean()
File "/usr/local/lib/python3.8/site-packages/django/forms/forms.py", line 433, in full_clean
self._clean_fields()
File "/usr/local/lib/python3.8/site-packages/django/forms/forms.py", line 443, in _clean_fields
value = field.clean(value, bf.initial)
File "/usr/local/lib/python3.8/site-packages/django/forms/fields.py", line 670, in clean
return super().clean(data)
File "/usr/local/lib/python3.8/site-packages/django/forms/fields.py", line 198, in clean
value = self.to_python(value)
File "/usr/local/lib/python3.8/site-packages/wagtail/images/fields.py", line 122, in to_python
self.check_image_pixel_size(f)
File "/usr/local/lib/python3.8/site-packages/wagtail/images/fields.py", line 112, in check_image_pixel_size
self.error_messages["file_too_many_pixels"] % (num_pixels),
ValueError: unsupported format character ')' (0x29) at index 33
复现步骤
  • 安装技术细节中列出的Wagtail及依赖库
  • 在全新Wagtail项目中上传多帧GIF即可触发错误
技术细节

依赖版本:

Django>=4.0,<4.1
wagtail>3
wagtail_localize==1.2.1
django-extensions==3.2.0
psycopg2==2.9.3
loglevel==0.1.2
Wand==0.6.10

系统安装命令:

  • Ubuntu Server:sudo apt-get install libmagickwand-dev
  • 本地MacOS:brew install imagemagick
解决方案

这个错误是Wagtail 3.x版本的已知bug:file_too_many_pixels错误消息字符串中存在未转义的括号,导致字符串格式化失败。多帧GIF的总像素数(帧数量×单帧像素)触发了像素数检查,进而触发了这个格式化错误。

有两种解决方式:

1. 临时修复:覆盖错误消息

在项目的settings.py中添加以下配置,重新定义正确的错误消息格式:

from wagtail.images.fields import WagtailImageField

WagtailImageField.default_error_messages.update({
    'file_too_many_pixels': "图片总像素数超过限制(最大允许 %(max_pixels)s),当前为 %(num_pixels)s",
})

2. 永久修复:升级Wagtail

后续版本已修复该问题,直接升级到Wagtail 3.0.1或更高版本即可:

pip install wagtail>=3.0.1 --upgrade

内容的提问来源于stack exchange,提问作者pdiede

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 15:27:21