gpt4 book ai didi

python - Django 中的文件上传类型验证

转载 作者:行者123 更新时间:2023-11-28 22:24:54 26 4
gpt4 key购买 nike

我正在尝试验证 Django 中的上传文件类型功能。允许的扩展名仅为 xml。管理员将上传一个 xml 文件,然后表格将使用 xml 文件中的数据填充。模型没有 filefield 但表单有。

accounts/models.py --

class Coupling(models.Model):
coupling_name = models.CharField(max_length=150, blank=False, null=True, default="")
module_name = models.TextField(blank=False, null=True)
def __str__(self):
return self.coupling_name

class Meta:
verbose_name_plural = "Couplings"

accounts/forms.py --

class CouplingUploadForm(forms.ModelForm):

coupling_file = forms.FileField(label='XML File Upload:', required=True)

class Meta:
model = models.Coupling
exclude = ['coupling_name', 'module_name']

settings.py

UPLOAD_PATH = os.path.join(BASE_DIR, "static", "uploads")

CONTENT_TYPES = ['xml']
MAX_UPLOAD_SIZE = "2621440"

accounts/admin.py

class couplingAdmin(admin.ModelAdmin):
list_display = ('coupling_name','module_name')
form = CouplingUploadForm
admin.site.register(Coupling, couplingAdmin)

我浏览了一些 SOF 引用资料,其中大部分都有 model.FileField,但就我而言,我不想将文件保存在模型中。

我尝试使用魔法 -- https://djangosnippets.org/snippets/3039/但是我遇到了 python-magic 安装错误——无法找到 libmagic。所以我想不用魔法就可以做到。

非常感谢任何帮助/建议/链接。提前致谢。

最佳答案

您可以创建自定义验证器

def validate_file_extension(value):
import os
from django.core.exceptions import ValidationError
ext = os.path.splitext(value.name)[1]
valid_extensions = ['.xml']
if not ext.lower() in valid_extensions:
raise ValidationError(u'Unsupported file extension.')

然后在你的表单域

coupling_file = forms.FileField(label='XML File Upload:',
required=True, validators=[validate_file_extension])

关于python - Django 中的文件上传类型验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46016222/

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