如何解决UnboundLocalError at /profile/
local variable 'context' referenced before assignment
的问题。我觉得还好吗?当我删除Payment_method
下拉菜单时,它可以工作,但是为什么不能与下拉菜单一起工作?
models.py
Paymet_choices = (
('easypaisa','EasyPaisa Number'),
('jazzcash', 'Jazzcash Number'),
)
class Profile(models.Model):
payment_method = models.CharField(max_length=6, choices=Paymet_choices)
forms.py
class ProfileUpdateForm(forms.ModelForm):
class Meta:
model = Profile
fields = ['image','Payment_method','Detail']
views.py
def profile(request):
if request.method == 'POST':
u_form = UserUpdateForm(request.POST, instance=request.user)
p_form = ProfileUpdateForm(request.POST,
request.FILES,
instance=request.user.profile)
if u_form.is_valid() and p_form.is_valid():
u_form.save()
p_form.save()
messages.success(request, f'Your account has been updated!')
return redirect('profile')
else:
u_form = UserUpdateForm(instance=request.user)
p_form = ProfileUpdateForm(instance=request.user.profile)
context = {
'u_form': u_form,
'p_form': p_form
}
return render(request, 'users/profile.html', context)
答案 0 :(得分:0)
该错误表示您在分配变量之前正在使用context
变量。
有两个问题。
首先,您的表格在此行上无效:
if u_form.is_valid() and p_form.is_valid():
因此,它将继续执行下一行(这意味着在外部else
语句之外):
return render(request, 'users/profile.html', context)
尚未分配context
变量的值。
第二个问题,要解决该错误,请检查您的缩进。
context = {
'u_form': u_form,
'p_form': p_form
}
return render(request, 'users/profile.html', context)
应该是
context = {
'u_form': u_form,
'p_form': p_form
}
return render(request, 'users/profile.html', context)
它将解决该错误,
现在回到第一个问题,您的表格无效。
在您使用form.errors
看到错误之前,我们不知道为什么。
将此添加到users/profile.html
模板中的任何位置以检查错误
{{ form.non_field_errors }}