扩展图像字段以允许 pdf ( django )

2023-12-24

我的表单中有 ImageField。正如我发现的,它使用枕头来验证该文件实际上是一个图像。这部分很棒,但我也需要在此表单字段中允许 pdf。

所以它应该检查文件是否是图像,如果不是,则检查它是否是pdf,然后加载并存储。

如果 pdf 检查能够真正检查文件格式,那就太好了,但仅扩展名检查也足够了。


如果你使用的话你就不能这样做forms.ImageField以你的形式。你需要使用forms.FileField因为ImageField仅验证图像并引发ValidationError如果文件不是图像。

这是一个例子:

模型.py

class MyModel(models.Model):
    image = models.ImageField(upload_to='images')

forms.py

import os
from django import forms
from .models import MyModel

class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel
        fields = ['image']

    image = forms.FileField()

    def clean_image(self):
        uploaded_file = self.cleaned_data['image']
        try:
            # create an ImageField instance
            im = forms.ImageField()
            # now check if the file is a valid image
            im.to_python(uploaded_file)
        except forms.ValidationError:
            # file is not a valid image;
            # so check if it's a pdf
            name, ext = os.path.splitext(uploaded_file.name)
            if ext not in ['.pdf', '.PDF']:
                raise forms.ValidationError("Only images and PDF files allowed")
        return uploaded_file

虽然上面的代码正确验证了图像的有效性(通过调用ImageField.to_python()方法),但要确定文件是否为 PDF,它仅检查文件扩展名。要实际验证 PDF 是否有效,您可以尝试解决此问题:检查 PDF 文件是否有效 (Python) https://stackoverflow.com/questions/559096/check-whether-a-pdf-file-is-valid-python。这种方法尝试读取内存中的整个文件,如果文件太大,它可能会耗尽服务器的内存。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

扩展图像字段以允许 pdf ( django ) 的相关文章

  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • django.db.utils.ProgrammingError:关系“django_content_type”不存在

    我有一个项目 我在我的电脑上慢慢建立起来 并且运行良好 我只是想将它放到服务器上 但收到此错误 django db utils ProgrammingError 关系 django content type 确实 不存在 我无法解决这个问题
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 如何使用 Ansible playbook 中的 service_facts 模块检查服务是否存在且未安装在服务器中?

    我用过service facts检查服务是否正在运行并启用 在某些服务器中 未安装特定的软件包 现在 我如何知道这个特定的软件包没有安装在该特定的服务器上service facts module 在 Ansible 剧本中 它显示以下错误
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • 以编程方式停止Python脚本的执行? [复制]

    这个问题在这里已经有答案了 是否可以使用命令在任意行停止执行 python 脚本 Like some code quit quit at this point some more code that s not executed sys e
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • AWS EMR Spark Python 日志记录

    我正在 AWS EMR 上运行一个非常简单的 Spark 作业 但似乎无法从我的脚本中获取任何日志输出 我尝试过打印到 stderr from pyspark import SparkContext import sys if name m
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • Python 的“zip”内置函数的 Ruby 等价物是什么?

    Ruby 是否有与 Python 内置函数等效的东西zip功能 如果不是 做同样事情的简洁方法是什么 一些背景信息 当我试图找到一种干净的方法来进行涉及两个数组的检查时 出现了这个问题 如果我有zip 我可以写这样的东西 zip a b a
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • Django admin - 更改权限列表

    是否可以更改用户编辑页面中的权限列表 我不想显示所有权限 例如管理日志条目或身份验证组等 如何修改主查询集以排除其中的某些查询集 我的想法来自这个话题 https groups google com forum topic django u
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 向 Altair 图表添加背景实心填充

    I like Altair a lot for making graphs in Python As a tribute I wanted to regenerate the Economist graph s in Mistakes we
  • 有没有办法检测正在运行的代码是否正在上下文管理器内执行?

    正如标题所述 有没有办法做到这样的事情 def call back if called inside context print running in context else print called outside context 这将
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P

随机推荐

  • C# 如何在控制台应用程序中制作水平条形图

    我需要制作一个水平条形图来表示直方图字典中数字的出现情况 我尝试过使用 Console BackgroundColor 但是 这显然只会使线条背景色变成蓝色 static void Main string args string Speac
  • 为什么 '\97' ascii 值等于 55

    就像C code include
  • 尝试序列化 avro 记录时,B 无法转换为 java.nio.ByteBuffer

    我编写了一个小型 Java 程序 该程序应该监视目录中的新文件并将它们以 binay Avro 格式发送到 Kafka 主题 我是 Avro 新手 我使用 Avro 文档和在线示例编写了这篇文章 监控部分运行良好 但程序在运行时到达 Avr
  • 使用 jQuery 在网页上突出显示字符串的字符

    我想使用 jQuery 在网页上某个值的索引处突出显示字符串的字符 该值是可变的 一次位于索引 2 下一次位于索引 3 var copy I am learning how to program letter text copy code
  • AttributeError:未知的属性密度[重复]

    这个问题在这里已经有答案了 我试图掌握 SciPy 但我被困住了Unknown property density错误 即使我从官方复制了整个代码SciPy 文档 https docs scipy org doc scipy referenc
  • Javascript - 清除数组对象中的重复项

    你好 我有一个 javascript 数组对象 表示在给定国家 地区销售的商品数量 如下所示 var data c1 USA c2 Item1 c3 100 c1 Canada c2 Item1 c3 120 c1 Italy c2 Ite
  • 日期挑选和寻找差异

    我是使用 Netbeans 进行 Java 编程的新手 我已将 jCalendar 添加到我的 GUI 中以选择日期 我已在 jCalendar 按钮的 事件 gt 属性更改 代码中输入了这一行 Date date jcalendar1 g
  • 显示 scipy 树状图的簇标签

    我正在使用层次聚类来对词向量进行聚类 并且我希望用户能够显示显示聚类的树状图 然而 由于可能有数千个单词 我希望这个树状图被截断为一些合理的有价值的 每个叶子的标签是该簇中最重要的单词的字符串 我的问题是 根据文档 http student
  • ionic 2:在 3x3 表格中显示项目数组

    我有一个项目数组 我想在 3x3 表格中显示 如下所示 为了实现这一点 我将数组切成 3 个数组 每组 3 个 并显示如下
  • Android J2ME 或 Java SE 中使用的是哪个版本的 Java?

    Android J2ME 或 Java SE 中使用的是哪个版本的 Java 每个人都在这里 但让我稍微澄清一下整个过程 它是如何工作的 我们使用标准 J2SE 发行版中的普通 Java 编译器并生成 class 文件 也称为 Java V
  • 如何在 ASP.NET MVC4 表中执行简单的多项选择

    这是我的观点 model Affiliate div class box paint color 16 div class title h4 i class icon tasks i span Model CompanyName s Com
  • 以十六进制编码/解码字符串并返回

    给定一个可能包含任意字符 包括unicode字符 的字符串 如何将这个字符串转换为十六进制表示 然后反转得到这个字符串的十六进制 Use pack and unpack function hex2str hex return pack H
  • 在lua中表示unichar的方式是什么

    如果我需要以下 python 值 unicode char 0 gt gt gt unichr 0 u x00 我如何在Lua中定义它 没有一个 Lua 没有 Unicode 值的概念 Lua没有Unicode的概念at all 所有Lua
  • 使用 Java 创建 .eml(电子邮件)文件

    有人知道该怎么做吗 我获取了电子邮件的所有信息 正文 主题 发件人 收件人 抄送 密件抄送 并且需要从中生成 eml 文件 您可以使用以下代码创建 eml 文件 它可以与雷鸟以及其他电子邮件客户端一起正常工作 public static v
  • 如何从 Intellij IDEA 访问 cassandra 数据库

    我在2018年10月16日安装了intellij idea 2018 2 5 我正在尝试添加到面板 数据库 cassandra 为此 我转到 Intellij 中的 数据源和驱动程序 设置并添加 cassandra 的驱动程序 gt 图片来
  • 捕获图像,上传到 Firebase 并检索 Java Android Studio

    如果这可能是一个有简单解决方案的问题 我感到非常抱歉 我想做什么 从按钮捕获图像 将该图像上传到 Firebase 存储 在 ImageView 中检索该图像 到目前为止我遇到了什么麻烦 拍照 但当我单击勾号时崩溃 因此 没有任何内容被上传
  • 如何在黑莓手机中使用相机扫描图像?

    我已经开始了一个项目 我想在其中实现二维码扫描功能 举个例子 android 中的 ZXing 我想为黑莓操作系统 6 及更高版本实现 我想使用相机扫描实时图像 是否可以 如果是的话 那怎么可能呢 您必须使用条形码 API 它是针对 OS
  • 如何在 GAE 应用程序中执行异步 api 请求?

    我正在开发一个基于 GAE 和 python 2 7 13 的应用程序 我想做的是在处理程序内进行一堆异步 API 调用 像这样的东西 class MakeRequests webapp2 RequestHandler def post s
  • 根据页面位置更改背景颜色

    我只想根据滚动更改背景颜色 例如从红到蓝 该代码有效 但如何将灰色更改为颜色 http fiddle jshell net schmudde ffk6phq0 http fiddle jshell net schmudde ffk6phq0
  • 扩展图像字段以允许 pdf ( django )

    我的表单中有 ImageField 正如我发现的 它使用枕头来验证该文件实际上是一个图像 这部分很棒 但我也需要在此表单字段中允许 pdf 所以它应该检查文件是否是图像 如果不是 则检查它是否是pdf 然后加载并存储 如果 pdf 检查能够