Django:如何为允许多个文件上传的字段编写干净的方法?

2023-12-04

我有一个用于上传图像的表单。

如果我遵循 Django 的标准清理表单的特定字段属性,这就是我的 clean 方法通常的样子:

class UploadImagesForm(forms.Form):
    image = forms.FileField()

    def clean_image(self):
        file = self.cleaned_data['image']
        if file:
            if file._size > 15*1024*1024:
                raise forms.ValidationError("Image file is too large ( > 15mb ).")
            return file
        else:
            raise forms.ValidationError("Could not read the uploaded file.")

但是,我使用的表单允许通过同一个小部件一次上传多个图像(即,用户可以按住 Shift 键并单击以在文件浏览器上选择多个文件)。因此,每当我需要访问视图或处理程序中的文件时,我都会使用类似的东西request.FILES.getlist('images')在 for 循环中。我到底该如何为这个领域编写一个干净的方法?我迷路了。

这是我的表格的样子。

class UploadImagesForm(forms.Form):
    images = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': 'multiple'}))

我想要该字段的 clean 方法来检查文件大小每个提交的文件,如上面第一段代码所示。


Use self.files.getlist('images') in clean迭代多个图像的方法:

def clean_images(self):
    files = self.files.getlist('images')
    for file in files:
        if file:
            if file._size > 15*1024*1024:
                raise forms.ValidationError("Image file is too large ( > 15mb ).")
        else:
            raise forms.ValidationError("Could not read the uploaded file.")
    return files
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django:如何为允许多个文件上传的字段编写干净的方法? 的相关文章

随机推荐

  • 在 scipy 中重现 sox 频谱图

    例如 我有一个带有语音的 wav 文件 我可以使用 sox 创建漂亮的频谱图可视化 wget https google github io tacotron publications tacotron2 demos romance gt w
  • BitBlt - 使用另一个应用程序的 HDC 时捕获的像素全为零 (bgra)

    由于 Nick Nougat 的答案中的代码 我可以使用 BitBlt 和 GetDIBits 成功捕获部分屏幕here 捕获整个屏幕或桌面似乎可行 但是当我提供应用程序的 HDC 时 它会打印奇怪的数据 以 bgra 格式 HWND de
  • IE8 中的无表表格布局

    有没有办法复制exactly这个布局没有表格 仅使用CSS和div 没有Javascript IE8 http jsfiddle net u0u7snh6 2 我尝试过多种场景IE8似乎很混乱 Height of the content c
  • C# MessageBox 导致按键处理程序忽略 SuppressKeyPress

    考虑具有以下组件的 Windows 窗体应用程序 partial class Form1 private System Windows Forms TextBox textBox new System Windows Forms TextB
  • 将整个工作簿另存为 PDF Excel 2010 (C#)

    无论如何 有没有办法将整个工作簿保存为 excel 中的 pdf 格式 我找到了这个 http msdn microsoft com en us library bb407651 v office 12 aspx 但它并没有确切地告诉您是将
  • 类似于 HtmlUnit 的 C# 库

    我需要编写独立的应用程序来 浏览 外部资源 C 中是否有自动处理 cookie 并支持 JavaScript 的库 我相信不需要通过 JS 主要目标是保持会话活动并提交表单 以便我可以通过多步骤注册过程或在登录后 浏览 网站 我查看了 Ht
  • Pandas Wide_to_long,id变量需要唯一标识每一行

    假设我有一个像这样的数据框 ID Time1 Value1 Time2 Value2 Time3 Value3 1 2 1 1 3 1 2 4 1 3 1 5 2 1 6 2 2 7 2 3 预期的数据框是这样的 ID Time Value
  • 将 4 个字符的字符串转换为 int32

    有没有一种快速的方法将 4 个字符转换为 32 位 int 我知道我可以像这样循环它 string key ABCD int val 0 for int i 0 i lt 4 i int b int key i int Math Pow 2
  • 如何在 Java GUI 中用鼠标光标拖动图像?

    我的代码调用目录中的 n 个图像来放置在 JPanel 上 public void imageAdder int n String name BufferedImage myPic null for int i 0 i lt n i try
  • mysql 搜索多列

    下面显示了名为 posts 的表中三列 上午 下午和晚上 的数据如何存储 假设用户想要搜索以下匹配的记录 早上 周一 周二 下午 周一 Mysql 查询必须在所有三列中搜索这些匹配的数据 我设法对单列执行此操作 例如 下午 但是如何更改我的
  • JavaScript数组长度为0

    我遇到了一些奇怪的行为 如下所示 它显示数组长度为 0 尽管在它之前打印它表明长度显然大于 0 var getTopSelection function callback var topSelection for var i 0 i lt
  • 如何设置 os x 中的应用程序使用的 $PATH

    我正在使用 ant 构建我的项目 并使用 svnversion 可执行文件将版本 ID 插入到我的源代码中 以便于跟踪版本 从命令行运行这个 ant 文件是有效的 我已经在 profile 中设置了 PATH 以包含 svnversion
  • 为 iPhone SDK 编译 Freetype (XCode)

    我想知道是否有人知道如何在 iPhone SDK 的 XCode 中配置 FreeType 我一直在尝试但没有成功 理想情况下 您需要使用最新的工具进行构建 从 iOS 6 0 SDK 版本开始 最低 SDK 版本为 4 3 并针对 arm
  • 将带有图像的 JLabel 添加到 JList 以显示所有图像

    这是我的代码 它不在框架中显示图像 而是显示一些文本 有人会建议我应该在代码中进行哪些更改 以便它允许我在框架中显示图像吗 import java awt Component import java awt Image import jav
  • 如何规范 Git 中的工作树行结尾?

    我克隆了一个行结尾不一致的存储库 我添加了一个 gitattributes它为我想要规范化的文件设置文本属性 现在 当我提交更改时 我收到消息 warning CRLF will be replaced by LF in FILE The
  • C# - 为什么这个变量在通过方法后没有被更改[重复]

    这个问题在这里已经有答案了 所以我显然对编程相当陌生 但我试图找出为什么这不起作用 我正在尝试获取字符串 myname 并将 Mr 添加到其开头 我知道我可以简单地做到这一点myname Mr myname但是我试图了解如何使用方法来更改变
  • n 组位的高效随机排列

    对于产生精确的位模式的问题n设置位 我知道两种实用的方法 但它们都有我不满意的局限性 首先 您可以枚举在预先计算的表中设置了那么多位的所有可能的字值 然后在该表中生成一个随机索引以挑选出可能的结果 这样做的问题是 随着输出大小的增长 候选输
  • 使用电子邮件地址将文件上传到云端

    所以我不确定这是否可能以及是否有意义 我正在尝试在我的应用程序中学习和使用云空间 因此 作为示例 我尝试创建一个应用程序来在 Google Drive 中上传文件 我注册了我的应用程序并使用了谷歌提供的一些参考资料 我现在可以上传文件了 我
  • 我可以有一个没有聚集索引的主键吗?另外我可以有多值聚集索引吗?

    各位 我想了解以下问题的答案 我可以有一个没有聚集索引的主键吗 我知道当我们在列上创建主键约束时 它默认创建一个聚集索引 那么在这种情况下 我应该如何停用聚集索引 我可以有一个包含多个列的聚集索引吗 就像在非聚集中一样 我可以为单个非聚集索
  • Django:如何为允许多个文件上传的字段编写干净的方法?

    我有一个用于上传图像的表单 如果我遵循 Django 的标准清理表单的特定字段属性 这就是我的 clean 方法通常的样子 class UploadImagesForm forms Form image forms FileField de