所以我没有成功从 django-merlin 连接基于会话的向导,但我再次尝试使用 django 源中包含的向导。但是,当尝试使用 上传文件时,文件ImageField
似乎request.FILES
没有绑定到表单,因为在尝试上传文件后我收到“此字段是必需的”错误。这是我所拥有的:
表格.py:
class StepOneForm(forms.Form):
year = forms.ChoiceField(choices=YEAR_CHOICES)
...
class StepTwoForm(forms.Form):
main_image = forms.ImageField()
...
class CreateWizard(SessionWizardView):
file_storage = FileSystemStorage(location=os.path.join(settings.MEDIA_ROOT))
def done(self, form_list, **kwargs):
d['main_image'] = request.FILES['main_image']
db = Thing(**d)
db.save()
return render(request, 'wizard-done.html', {
'form_data': [form.cleaned_data for form in form_list],
})
在CreateWizard
上面我试图保存这个stackoverflow问题中讨论main_image
的done
方法,但我没有成功。
更新:
添加enctype=multipart/form-data
允许我绑定文件,但现在我收到一个新错误:
global name 'request' is not defined
即使请求上下文处理器在我的TEMPLATE_CONTEXT_PROCESSORS
. 在链接的stackoverflow帖子中定义完成的方法也不起作用:
class CreateWizard(SessionWizardView):
file_storage = FileSystemStorage(location=os.path.join(settings.MEDIA_ROOT))
def done(self, request, form_list):
结果是TypeError: done expects 3 arguments, 2 given