赋值前引用的 /register/ 局部变量 'form_value' 处的 UnboundLocalError
UnboundLocalError at /register/ local variable 'form_value' referenced before assignment
我想进入注册页面但是我不能
views.py
def registerPage(request):
if request.user.is_authenticated:
return redirect('home')
else:
if request.method == 'POST':
form_value = CreateUserForm(request.POST)
if form_value.is_valid():
form_value.save()
user = form_value.cleaned_data.get('username')
messages.success(request, 'Account was create for {}'.format(user))
return redirect('login')
context = {'form_key':form_value}
return render(request, 'accounts/register.html', context)
回溯
File "C:\Users\le\anaconda3\envs\myenv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "C:\Users\le\anaconda3\envs\myenv\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\le\Desktop\django-course\Django(02-09-21)\crm1\accounts\views.py", line 26, in registerPage
context = {'form_key':form_value}
UnboundLocalError: local variable 'form_value' referenced before assignment
可能缩进有问题,请帮助我
您需要为 GET
个请求定义表单对象。
def registerPage(request):
if request.user.is_authenticated:
return redirect('home')
else:
if request.method == 'POST':
form_value = CreateUserForm(request.POST)
if form_value.is_valid():
form_value.save()
user = form_value.cleaned_data.get('username')
messages.success(request, 'Account was create for {}'.format(user))
return redirect('login')
form_value = CreateUserForm() # < --- here
context = {'form_key':form_value}
return render(request, 'accounts/register.html', context)
您可以使用 decorators
更可重用的方式来检查用户是否已通过身份验证。 ref
decorators.py
# checks whether the user is logged in and control accessing to register page
def unauthenticated_user(views_func):
def wrapper_func(request, *args, **kwargs):
if request.user.is_authenticated:
return redirect('/')
else:
return views_func(request, *args, **kwargs)
return wrapper_func
在views.py
@unauthenticated_user
def registerPage(request):
...
我想进入注册页面但是我不能
views.py
def registerPage(request):
if request.user.is_authenticated:
return redirect('home')
else:
if request.method == 'POST':
form_value = CreateUserForm(request.POST)
if form_value.is_valid():
form_value.save()
user = form_value.cleaned_data.get('username')
messages.success(request, 'Account was create for {}'.format(user))
return redirect('login')
context = {'form_key':form_value}
return render(request, 'accounts/register.html', context)
回溯
File "C:\Users\le\anaconda3\envs\myenv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "C:\Users\le\anaconda3\envs\myenv\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\le\Desktop\django-course\Django(02-09-21)\crm1\accounts\views.py", line 26, in registerPage
context = {'form_key':form_value}
UnboundLocalError: local variable 'form_value' referenced before assignment
可能缩进有问题,请帮助我
您需要为 GET
个请求定义表单对象。
def registerPage(request):
if request.user.is_authenticated:
return redirect('home')
else:
if request.method == 'POST':
form_value = CreateUserForm(request.POST)
if form_value.is_valid():
form_value.save()
user = form_value.cleaned_data.get('username')
messages.success(request, 'Account was create for {}'.format(user))
return redirect('login')
form_value = CreateUserForm() # < --- here
context = {'form_key':form_value}
return render(request, 'accounts/register.html', context)
您可以使用 decorators
更可重用的方式来检查用户是否已通过身份验证。 ref
decorators.py
# checks whether the user is logged in and control accessing to register page
def unauthenticated_user(views_func):
def wrapper_func(request, *args, **kwargs):
if request.user.is_authenticated:
return redirect('/')
else:
return views_func(request, *args, **kwargs)
return wrapper_func
在views.py
@unauthenticated_user
def registerPage(request):
...