I'm trying to get into it the register page but i cant
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)
Traceback
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
Maybe have problem with indentation, please help me
CodePudding user response:
You need to define the form object for GET
requests.
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)
You can check whether the user is authenticated or not, by using decorators
more reusable way. 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
in views.py
@unauthenticated_user
def registerPage(request):
...