"上传多个文件时,将请求.POST与请求本身传递给django表单的传递方式"

2024-04-24 01:08:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用以下表格上传多张图片

class AlbumForm(forms.Form):
album_name = forms.CharField(label='Titel', max_length=100, required=True)
album_description = forms.CharField(label='Beschrijving', widget=forms.Textarea)
images = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': True}))

在接收视图中,我注意到当我将request.POST传递到表单时,我无法访问表单中的图像。另一方面,当我将请求本身传递给表单时,我可以访问文件,但不能使用form.isValid()方法

只有多重图像文件不可用,其他两个值照常可用

    def post(self, request, *args, **kwargs):
    images_form = AlbumForm(request)
    ...
    if images_form.is_valid():
        images = images_form.data.FILES.getlist('images')
        Imgur().create_album(title=images_form.album_name, description=images_form.album_description, images=images)
    ...

下面是表单的html代码

<form method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    {{images_form|crispy}}
    <input class="" type="submit" value="save">
</form>

造成这种差异的原因是什么?我做错了什么

编辑:仅使用请求时,名称和描述不可用,因此我想正确的方法是使用request.POST,但是访问文件的正确方法是什么


Tags: 方法nameformtrue表单albumrequestforms