我有一个表格,有一堆字段,然后我有一个:
profile_image=forms.ImageField(required=False)
问题是在 form.is_valid() 检查之后,
form.cleaned_data.get('first_name')
例如,确实返回实际名称,但是,
form.cleaned_data.get('profile_image')
不返回任何东西。
在 print(request.POST) 输出中,我得到
u'profile_image': [u'02 Portfolio Page.jpg']
但在 print(form.cleaned_data) 我得到:
'profile_image': None
为什么文件在 is_valid 检查时丢失?我该怎么办?
更新:
class NewChickForm(forms.Form):
first_name = forms.CharField()
last_name = forms.CharField()
profile_image=forms.ImageField(required=False)
def do_save(self):
u = Subject(
first_name = self.cleaned_data.get('first_name'),
last_name = self.cleaned_data.get('last_name'),
profile_image = self.cleaned_data.get('profile_image'),
)
print(self.cleaned_data)
u.save()
return u
和
s = Subject()
form = NewChickForm(request.POST) # 1)do i add here `request.FILES` ?
if form.is_valid():
s = form.do_save()
# 2) s.profile_image = form.cleaned_data.get('profile_image')?
即使我做#1) 和#2),我仍然得到 NONE
最佳答案
确保您使用了正确的 enctype
在您的 HTML 表单上:
<form enctype="multipart/form-data" method="post" action="/foo/">
另外,请确保绑定(bind)
request.FILES
当您构造表单对象时。# Bound form with an image field, data from the request
>>> f = ContactFormWithMugshot(request.POST, request.FILES)
Binding uploaded files to a form
编辑: File Uploads
关于Django:form.is_valid 检查后,cleaned_data 缺少图像字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4330181/