gpt4 book ai didi

Django ModelForm 没有正确处理文件

转载 作者:行者123 更新时间:2023-12-04 06:03:38 27 4
gpt4 key购买 nike

我有一个非常基本的模型,上面有一个 ImageField,还有一个用于上传该图像的 ModelForm。我的表单失败,说我的图像无效,但是如果我直接从 request.FILES 实例化模型的图像,它就可以完美运行。该文件已上传并存在于我的媒体目录中。见下面的代码

此外,这在管理中心也失败了。

我很确定它不是的事情:

  • 多部分/表单数据
  • 不正确的媒体路径设置
  • 这些目录中的权限设置。

  • 模型.py
    class ImageTile(BaseTile):
    created_at = models.DateTimeField(default=datetime.datetime.now)
    updated_at = models.DateTimeField(auto_now=True)
    image = models.ImageField(upload_to='tiles/')

    表格.py
    class ImageTileForm(forms.ModelForm):
    class Meta:
    model = ImageTile
    fields = ('image', )

    View .py
    if request.method == 'POST':
    # Then we do image tiles
    #if request.FILES:
    image_form = ImageTileForm(request.POST, request.FILES)
    if image_form.is_valid():
    image_form.save()

    模板
      <form enctype="multipart/form-data" method="post" action="">
    {% csrf_token %}
    {{ image_form.non_field_errors }}
    {{ image_form.image.errors }}
    {{ image_form.image.label_tag }}
    {{ image_form.image }}
    <button type="submit">Submit</button>
    </form>

    image_form.errors
    django.forms.util.ErrorDict({'image': django.forms.util.ErrorList([u'Upload a valid image. The file you uploaded was either not an image or a corrupted image.'  ])})

    手动执行的终端输出
    >>> from scrapbook.models import ImageTile
    >>> x = ImageTile(image=request.FILES['image'])
    >>> x.save()
    >>> x.id
    2
    >>> x.image
    <ImageFieldFile: tiles/cathy_orange.jpg>
    >>>

    最佳答案

    问题是有一个没有 jpeg 支持的 PIL 安装。安装 libjpeg 并重新安装 PIL,一切正常。

    有趣的是 Django ModelForms 验证了这一点,但模型没有。在我尝试访问宽度/高度属性之前,模型从未抛出错误。

    关于Django ModelForm 没有正确处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8630462/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com