我试图在我的视图中使用该表单,但是检查用户是否已登录或是否根据其更改某些字段。
这是我的 views.py
def PostAd(request):
if request.user.is_authenticated:
obj = Account.objects.get(user=request.user)
if request.method == "POST":
ad_post_form = AdPostForm(request.POST, request.FILES)
if ad_post_form.is_valid():
ad_post_form.created_by = request.user
if obj.role == 'admin':
ad_post_form.is_active = True
ad_post_form.save()
return redirect('home')
else:
ad_post_form = AdPostForm(request.POST, request.FILES)
else:
if request.method == "POST":
ad_post_form = AdPostForm(request.POST, request.FILES)
if ad_post_form.is_valid():
ad_post_form.created_by = 'guest'
otp_number = random.randint(100000, 999999)
ad_post_form.otp = otp_number
ad_post_form.save()
return redirect('home')
else:
ad_post_form = AdPostForm()
context = {
'ad_post_form': ad_post_form,
}
return render(request, 'pages/post-ad.html', context)
由于某种原因。变量ad_post_form
在我找不到的特定步骤中超出范围。所以它给我错误local variable 'ad_post_form' referenced before assignment.
答案 0 :(得分:2)
如果用户未通过身份验证,并且请求方法不是POST ad_post_form
,则不会定义。您只需在视图顶部定义ad_post_form
即可解决:
def PostAd(request):
ad_post_form = AdPostForm()
if request.user.is_authenticated:
...