我是新的Django,正在创建一个社交网络网站来获取它。我已经制作了一个用于上传个人资料图片的表单并在我的模板中成功呈现,但是当我上传它时,我收到一个名为 profile_pic 的错误。请帮帮我。
views.py - 这是我正在进行的处理。我在这里得到一个无效的表格错误,返回HttpResponse(profilePicForm.errors)作为回复返回 profile_pic 。
if request.method == "POST":
profilePicForm = ProfilePicForm(request.POST, request.FILES)
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 HttpResponse(profilePicForm.errors)
forms.py - 表单类
class ProfilePicForm(forms.Form):
profile_pic = forms.FileField()
profile.html - 这就是我渲染它的方式。
<form action="{% url 'newsfeed:uploadProfilePic' %}" method="post">
{% csrf_token %}
{{ profilePicForm.as_p }}
<button type="submit">Upload</button>
</form>
答案 0 :(得分:2)
如果表单无效,则通常会渲染相同的模板,以查看网页上的错误消息,因此您应该执行以下操作,而不是return 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})
同样,对于文件上传,您应该添加到表单enctype="multipart/form-data"
:
<form action="{% url 'newsfeed:uploadProfilePic' %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ profilePicForm.as_p }}
<button type="submit">Upload</button>
</form>