所以我试图建立一个简单的视图,允许用户使用表单提交来更改他们的头像。在POST请求之前呈现视图工作正常,但是当用户通过表单提交提交新图像文件时,我遇到以下错误:
Value Error at /
The view dashboard.views.index didn't return an HttpResponse object. It returned None instead.
以下是我的view.py
中的一个片段
@login_required(login_url='/accounts/login/')
def index(request):
if request.method == 'POST':
if 'imagefile' in request.POST:
form = forms.AvatarUpdate(request.POST, request.FILES)
if form.is_valid():
image = request.FILES['image']
request.user.avatar = image
request.user.save()
return redirect('/')
else:
form = forms.AvatarUpdate()
return render(request, 'dashboard/index.html', {"this_page": "home", "form": form})
而forms.py
如下所示:
class AvatarUpdate(forms.Form):
imagefile = forms.ImageField(widget=forms.FileInput(attrs={'name': "imagefile"}), label="Change user avatar")
这里我的意图是,只有当POST请求包含变量imagefile
时,才保存模型。我应该如何着手解决这个问题
好的,我已经完成了这项工作,似乎输入的变量名是
request.FILES
而不是request.POST
的一部分。所以总的来说view.py
是这样的:谢谢你的帮助
并非所有if语句都返回HttpResponse。如果希望保持相同的逻辑,则需要将else与HttpResponse放在一起,而不能将最后一个return放在else语句之外,因为无法识别表单变量
也可以定义默认表单值:
相关问题 更多 >
编程相关推荐