如何使用 FileFields 限制 ModelForms 文件上传的文件类型?

2023-12-28

我的目标是将 Django ModelForm 上的 FileField 限制为 PDF 和 Word 文档。我在谷歌上搜索到的答案都涉及创建一个单独的文件处理程序,但我不确定如何在 ModelForm 的上下文中执行此操作。我可以使用 settings.py 中的设置来限制上传文件类型吗?


创建一个验证方法,例如:

def validate_file_extension(value):
    if not value.name.endswith('.pdf'):
        raise ValidationError(u'Error message')

并将其包含在 FileField 验证器中,如下所示:

actual_file = models.FileField(upload_to='uploaded_files', validators=[validate_file_extension])

此外,您应该在setting.py 上创建一个列表并对其进行迭代,而不是手动设置模型允许的扩展。

Edit

要过滤多个文件:

def validate_file_extension(value):
  import os
  ext = os.path.splitext(value.name)[1]
  valid_extensions = ['.pdf','.doc','.docx']
  if not ext in valid_extensions:
    raise ValidationError(u'File not supported!')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 FileFields 限制 ModelForms 文件上传的文件类型? 的相关文章

随机推荐

  • 有人可以推荐一个好的 C++ 数据包嗅探器类吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人可以推荐一个好的 C 数据包嗅探器类吗 寻找一个可以在我的 C 程序中使用的简单可插入类 没什么复
  • 如何从 Subversion 存储库编辑和提交单个文件?

    使用TortoiseSVN 命令行解决方案也可以 无需在存储库端创建文件夹 签出单个文件 编辑并使用注释签入的步骤是什么 AFAIK 您无法从 SVN 获取单个文件的副本 工作副本始终是一个目录 因此 您需要签出整个文件夹才能编辑有问题的文
  • 编程风格:应该检查函数内或函数外的 null 吗?

    当您使用对象调用函数时 是否应该在调用函数之前检查函数中是否为空 或者两者都检查 什么是更好的编程实践 像这样的东西 Test a getTest if a null myFunc a def myFunc x print x val or
  • 如果路径以“/api”开头并且有一个映射为后备的文件,如何返回 404?

    我有一个 ASP NET Core 6 0 应用程序 WeatherForecastController index html in wwwroot folder 我已经配置了index html作为文件后备 这是main的方法progra
  • 没有省略值的分组非密集排名

    我有以下数据框 df lt data frame date c 1 1 1 1 2 2 2 2 3 3 3 3 id c 4 4 2 4 1 2 3 1 2 2 1 1 我想添加一个新列grp它对每个日期的 ID 进行排名 关系应具有相同的
  • 数据库查询和插入速度取决于什么?

    在我的工作中 我们有一个小型数据库 有 200 个表 总共可能有 100 万行左右 我一直期望它的速度相当快 每秒插入数万次 并且一旦建立连接 查询只需几毫秒 恰恰相反 我们遇到了一些性能问题 因此我们每秒只能进行几百次插入和查询 即使是最
  • Rails 3 + Carrierwave + nginx = 权限被拒绝

    我已经用 rmagick 安装了 Carrierwave gem 如果通过 WEBrick 加载 我可以让它正常工作 但在尝试使用 nginx 时会出现 500 内部服务器错误 nginx error log 说 2011 08 14 10
  • Jetpack 将数字输入到文本字段

    当键盘的 KeyboardType 设置为 KeyboardType Number 时 我当前无法捕获用户输入到文本字段中 如果键盘设置为 KeyboardType Text 则文本字段会按预期更新 但是当设置为 KeyboardType
  • Heroku 无法在 Visual Studio Code 中加载

    heroku File C Users mar AppData Roaming npm heroku ps1 cannot be loaded The file C Users mar AppData Roaming npm heroku
  • 熟悉 SilverStripe 吗?您的意见/印象是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Firebase 部署显示没有应用内容的欢迎屏幕

    我克隆了一个快速启动角度应用程序 我跑firebase init and firebase deploy 输出显示部署成功 我导航到url https scratch app 8fde2 firebaseapp com 但它只显示欢迎屏幕
  • 初始化对象的编码模式 - 构造函数(新)与 Object.create() (Crockford)

    注意 这不是一个关于经典继承和原型继承的问题 这是关于使用什么编码模式来初始化对象 类构造函数创建并初始化对象 同时避免new运营商并走向Object create 仅创建对象并设置原型链 我还没有找到一个在线资源来解释在使用 Crockf
  • 为什么反应钩子形式输入中的第一个字母是死的

    我需要帮助来理解为什么简单输入组件中的第一个字母没有注册 我从示例中创建了一个简单的受控输入 但它无法正常工作 我为你创建了一个例子https stackblitz com edit react 9zezqx https stackblit
  • CMake:将 ELF 嵌入可执行文件

    我有一个项目需要访问嵌入到可执行文件中的 ELF 文件特别部分 https stackoverflow com questions 2627004 embedding binary blobs using gcc mingw 我之前手工制作
  • 交易ID设置正确,但稍后仅显示提交

    我的代码给出了正确的响应并正确设置了交易 ID 但是在屏幕上 我第一次提交时缺少ID 当我返回并再次提交时 屏幕上的ID就是第一笔交易的ID On the 首先提交 这被渲染为 MOBILE NUMBER 9129992929 OPERAT
  • 如何在 Hibernate 中限制数据库级别的用户访问

    The App 我需要实现一个可供不同用户使用的网络应用程序 每个用户对不同的表有不同的权限 例如 用户 A 可以看到表中的 名称 和 地址 字段Student 用户 B 可以看到表中的 姓名 和 电话号码 字段 但看不到 地址 Stude
  • 如何从 Python 中的元组中获取整数?

    我有一个包含两个数字的元组 我需要获取这两个数字 第一个数字是 x 坐标 第二个数字是 y 坐标 我的伪代码是我关于如何去做的想法 但是我不太确定如何让它工作 伪代码 tuple 46 153 string str tuple ss str
  • 使用 sass 连接字符串

    我想写一个像这样的 sass 循环 fractions for i from 1 through 4 fractions fractions 1fr grid i grid template columns fractions displa
  • Autofac - 如何创建带有参数的生成工厂

    我正在尝试使用 Autofac 创建一个 生成 工厂 它将根据枚举参数实时解决依赖关系 给定以下接口 类 public delegate IConnection ConnectionFactory ConnectionType connec
  • 如何使用 FileFields 限制 ModelForms 文件上传的文件类型?

    我的目标是将 Django ModelForm 上的 FileField 限制为 PDF 和 Word 文档 我在谷歌上搜索到的答案都涉及创建一个单独的文件处理程序 但我不确定如何在 ModelForm 的上下文中执行此操作 我可以使用 s