Python 在Django中上载带有文件字段的表单时,文件无效

Python 在Django中上载带有文件字段的表单时,文件无效,python,django,Python,Django,我是新来的Django,正在创建一个社交网络网站来获得它。我已经制作了一个上传个人资料图片的表单,并成功地在我的模板中呈现,但当我上传它时,我得到一个名为profile_pic的错误。请帮我解决这个问题 views.py-这是我正在进行的处理。我在这里得到一个无效的表单错误,返回行HttpResponse(profilePicForm.errors)返回profile_pic作为响应 profile.html-这就是我呈现它的方式 {%csrf_令牌%} {{profilePicForm.as

我是新来的Django,正在创建一个社交网络网站来获得它。我已经制作了一个上传个人资料图片的表单,并成功地在我的模板中呈现,但当我上传它时,我得到一个名为profile_pic的错误。请帮我解决这个问题

views.py-这是我正在进行的处理。我在这里得到一个无效的表单错误,返回行HttpResponse(profilePicForm.errors)返回profile_pic作为响应

profile.html-这就是我呈现它的方式


{%csrf_令牌%}
{{profilePicForm.as_p}
上传

通常的做法是,如果表单无效,则呈现相同的模板,以查看网页上的错误消息,因此,您不必返回HttpResponse(profilePicForm.errors)而应执行以下操作:

if profilePicForm.is_valid():
        return HttpResponse("<h1>Valid</h1>")
        profilePic = ProfilePictures()
        query = UserInfo.objects.filter(id=id)
        for user in query:
            profilePic.user = user
            break
        profilePic.profile_pic = profilePicForm.cleaned_data['profile_pic']
        profilePic.save()
        return redirect('newsfeed:profile')
    else:
        return render(request, 'template.html', {'profilePicForm': profilePicForm})

使用print(profilePicForm.errors)时,我得到的是-
  • profile\u pic
    • 这个字段是必需的。
@kodeturtle看起来你错过了
enctype=“多部分/表单数据”
检查更新。是的,它成功了。从我这方面来说,这是一个非常愚蠢的错误。非常感谢。这并没有为您的问题提供任何直接的解决方案,只是为了让您知道Django中有一个可以使用的
ImageField
!检查
class ProfilePicForm(forms.Form):
    profile_pic = forms.FileField()
<form action="{% url 'newsfeed:uploadProfilePic' %}" method="post">
        {% csrf_token %}
        {{ profilePicForm.as_p }}
        <button type="submit">Upload</button>
    </form>
if profilePicForm.is_valid():
        return HttpResponse("<h1>Valid</h1>")
        profilePic = ProfilePictures()
        query = UserInfo.objects.filter(id=id)
        for user in query:
            profilePic.user = user
            break
        profilePic.profile_pic = profilePicForm.cleaned_data['profile_pic']
        profilePic.save()
        return redirect('newsfeed:profile')
    else:
        return render(request, 'template.html', {'profilePicForm': profilePicForm})
<form action="{% url 'newsfeed:uploadProfilePic' %}" method="post" enctype="multipart/form-data">
    {% csrf_token %}
    {{ profilePicForm.as_p }}
    <button type="submit">Upload</button>
</form>