所以我正在尝试在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"
在表单标记中,而不是将其作为特定字段的参数传递。