UnboundLocalError at /register/ локальная переменная 'form_value' ссылается перед присвоением

Я пытаюсь зайти на страницу регистрации, но не могу

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

Возможно, у меня проблема с отступами, пожалуйста, помогите мне

Вам необходимо определить объект формы для 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):
    ...
Вернуться на верх