Django:在form.is_valid检查之后,cleaning_data缺少图像字段

mgP*_*ePe 2 forms django validation django-models

我有一个表格,有一堆字段,然后我有一个:

    profile_image=forms.ImageField(required=False)
Run Code Online (Sandbox Code Playgroud)

问题是在form.is_valid()检查之后,

form.cleaned_data.get('first_name')
Run Code Online (Sandbox Code Playgroud)

例如,DOES返回实际名称,但是,

form.cleaned_data.get('profile_image')
Run Code Online (Sandbox Code Playgroud)

不会返回任何东西.

在print(request.POST)输出中,我得到了

u'profile_image': [u'02 Portfolio Page.jpg']
Run Code Online (Sandbox Code Playgroud)

但在print(form.cleaned_data)中,我得到:

 'profile_image': None
Run Code Online (Sandbox Code Playgroud)

为什么文件在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
Run Code Online (Sandbox Code Playgroud)

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')?
Run Code Online (Sandbox Code Playgroud)

即使我做#1)和#2),我仍然没有

Joe*_*way 14

确保您enctype在HTML表单上使用了正确的内容:

<form enctype="multipart/form-data" method="post" action="/foo/">
Run Code Online (Sandbox Code Playgroud)

此外,确保request.FILES在构造表单对象时绑定.

# Bound form with an image field, data from the request
>>> f = ContactFormWithMugshot(request.POST, request.FILES)
Run Code Online (Sandbox Code Playgroud)

将上传的文件绑定到表单

编辑: 文件上传