2 回答
TA贡献1789条经验 获得超8个赞
并非所有 if 语句都返回 HttpResponse。如果要保持相同的逻辑,则需要将 else 与 HttpResponse 放在一起,并且不能将最后一个 return 放在 else 语句之外,因为您的表单变量将无法识别。
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:
return render(...)
else:
return render(...)
else:
form = forms.AvatarUpdate()
return render(request, 'dashboard/index.html', {"this_page": "home", "form": form})
或者你可以定义一个默认的表单值:
def index(request):
form = None
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})
TA贡献1862条经验 获得超7个赞
好的,我已经完成了这项工作,似乎输入的变量名是request.FILESnot的一部分request.POST。所以总的来说view.py是这样的:
@login_required(login_url='/accounts/login/')
def index(request):
form = forms.AvatarUpdate()
if request.method == 'POST':
form = forms.AvatarUpdate(request.POST, request.FILES)
if 'imagefile' in request.FILES:
if form.is_valid():
image = request.FILES['imagefile']
request.user.avatar = image
request.user.save()
return redirect('/')
else:
return render(request, 'dashboard/index.html', {"this_page": "home", "form": form})
感谢您尝试提供帮助
添加回答
举报
