Django fileField适用于管理页面,但不适用于表单

时间:2018-06-13 22:10:40

标签: python django file-upload django-forms django-templates

所以我正在尝试在Django中创建一个带有fileField的表单,如果我在管理页面中访问它,它的工作正常,但是当我在我的表单中使用时它无效。 request.FILES返回

<MultiValueDict: {}>

然而,文件最后显示在request.body中

'csrfmiddlewaretoken=71Bg3CNHChPrGuOJlVTPJuvX7RsU6o3DiOMtZnPciNwLAubF1ThfgOLM7htaBvba&userName=daniel&infoName=a&linkURL=http%3A%2F%2Fa.com&fileField=IMG_20180608_145044.jpg&addInfo='

如果删除fileField,表单完全正常。 我已经读过关于enctype的必要性,但我的表格仍然拒绝工作。

class AdditionalInfoForm(forms.Form):
    userName = forms.CharField(
        widget  = forms.TextInput(
        attrs={
            'class': 'form-control typeahead-basic', 
            'placeholder': ''}))
    infoName = forms.CharField(
        widget  = forms.TextInput(
        attrs={
            'class': 'form-control'}))
    linkURL = forms.CharField(
        widget  = forms.TextInput(
        attrs={
            'class': 'form-control', 
            'type': 'url'}))
    fileField = forms.FileField(
        widget = forms.FileInput(
        attrs={
            'action': '', 
            'method': 'post', 
            'data-ajax': 'false', 
            'class': 'form-control', 
            'enctype': 'multipart/form-data', 
            'input type': 'file'}))

模板中的重要部分就是这个

<div class="form-group">
    <label class="control-label col-lg-3">Upload File</label>
    <div class="col-lg-9">
        {{ additionalInfoForm.fileField }}
    </div>
</div>

编辑: 我真笨。我需要把

enctype = "multipart/form-data"

在表单标记中,而不是将其作为特定字段的参数传递。

0 个答案:

没有答案