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})
感謝您嘗試提供幫助
添加回答
舉報