使用 FileField 在 Django 表单中生成具有“accept”属性的输入标签

Ste*_*son 4 django django-forms

我想创建一个表单来从iOS Safari上传和保存视频,它支持输入标签的“接受”属性,例如:

<input type=file accept="video/*">
Run Code Online (Sandbox Code Playgroud)

允许您拍摄和上传新视频或在设备上选择视频文件。

我看过 Django 文档:https : //docs.djangoproject.com/en/dev/ref/forms/fields/#django.forms.FileField

但看不到我可以在哪里指定输入的“接受”属性。这可能吗?我可以在模板中创建输入标签并仍然使用 Django 表单处理来接受文件吗?

Fli*_*imm 7

简单。在您的模型表单中,只需确保FileInput使用所需的acceptHTML 属性创建小部件:

from django import forms

class VideoForm(forms.ModelForm):
    class Meta:
        model = Video
        exclude = []
        widgets = {
            'video_file': forms.FileInput(attrs={'accept': '.mov,video/quicktime'}),
        }
Run Code Online (Sandbox Code Playgroud)


Ade*_*laN 4

没有简单的方法可以做到这一点,您可以在这个问题中看到一些很好的答案 另外,个人建议(未经测试):创建表单后,像这样设置您想要的任何属性

    for f in form.fields:
        if isinstance(form.fields[f].widget, ClearableFileInput):
            form.fields[f].widget.attrs['accept'] = 'video/*'
Run Code Online (Sandbox Code Playgroud)