![](/img/trans.png)
[英]"local variable referenced before assignment" error when trying to get emoji ID and compare it
[英]local variable error when trying multiform in one view
我在互聯網上尋找一種在一個視圖中使用兩種形式的解決方案,並在Django中找到了一種在一頁上處理多種形式的正確方法 。
但是當嘗試發布任何表單時,我在賦值錯誤之前得到了引用的局部變量'loginform'。
追溯
Request Method: POST
Request URL: http://127.0.0.1:8000/
Django Version: 1.8.3
Python Version: 2.7.10
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'main')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware')
Traceback:
File "/Users/eisamazrouei/Desktop/django/imhere/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
132. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/eisamazrouei/Desktop/django/imhere/imhere/main/views.py" in landing_page
36. return render(request,'main/landing_page.html',{'loginform':loginform,'registerform':registerform})
Exception Type: UnboundLocalError at /
Exception Value: local variable 'loginform' referenced before assignment
views.py
def landing_page(request):
if request.method == "POST":
if 'Login' in request.POST:
loginform = LoginForm(request.POST)
if loginform.is_valid():
username = form.cleaned_data['l_username']
password = form.cleaned_data['l_password']
user = authenticate(username=username,password=password)
login(request,user)
return redirect(reverse('main_page',args=[request.user.username]))
registerform = RegisterForm()
elif 'Register' in request.POST :
registerform = RegisterForm(request.POST)
if registerform.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
email = form.cleaned_data['email']
user = User.objects.create_user(username,email,password)
login(request,user)
return redirect(reverse('edit_page',args=[request.user.username]))
loginform = LoginForm()
else :
loginform = LoginForm()
registerform=RegisterForm()
return render(request,'main/landing_page.html',{'loginform':loginform,'registerform':register form})
landing_page.html
<div id=login>
<form action="" method="POST">
{% csrf_token %}
{{loginform.as_p}}
<input type="submit" value="Login"/>
</form>
</div>
<div id=register>
<form action="" method="POST">
{% csrf_token %}
{{registerform.as_p}}
<input type="submit" value="Register"/>
</form>
</div>
請讓我知道我使用的方法是否錯誤。
謝謝
您不會在帖子數據中發送“登錄”或“注冊”信息,因此,發布時都不會滿足任何條件,並且變量仍未定義。
您已為提交按鈕指定了值,但未指定名稱,因此它們不能包含在帖子數據中。 做這個:
<input type="submit" name="Login" value="Login"/>
...
<input type="submit" name="Register" value="Register"/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.