Почему проверка Django CSRF завершается неудачей?

#django

#django

Вопрос:

Итак, у меня есть форма регистрации в Django. Однако, когда я заполняю форму и нажимаю отправить, страница продолжает загружаться. (Я не уверен, что это правильное выражение. значок в названии вкладки превращается во вращающийся круг.) Страница загружалась довольно долго, поэтому я снова нажал кнопку отправки и получил запрещенное сообщение, в котором говорилось, что токен CSRF не проверен. Это продолжает происходить.

Однако дело в том, что когда я захожу на страницу администратора, создается учетная запись пользователя. И вход в систему работает нормально.

Единственная проблема в том, что когда я нажимаю кнопку отправки, она только продолжает загружаться, и когда я снова нажимаю кнопку отправки, я получаю сообщение об ошибке, в котором говорится, что токен CSRF не проверен, но учетная запись создана. Что с этим не так? Я покажу вам свой код.

 <form method="post" class="form-group">{% csrf_token %}
    <div class="row login-block">
        <div class="col">
                <div class="row">
                    <div class="col col-4">
                        {{form.username|as_crispy_field}}
                    </div>
                    <div class="col col-8">
                        {{form.email|as_crispy_field}}
                    </div>
                </div>
                <div class="row">
                    <div class="col col-5">
                        {{form.password1|as_crispy_field}}
                    </div>
                    <div class="col col-5">
                        {{form.password2|as_crispy_field}}
                    </div>
                </div>
                <div class="row">
                    <div class="col text-left">
                        <button type="submit" class="btn menial-buttons">Submit</button>
                    </div>
                    
                </div>
        </div>
    </div>
</form> 
  

views.py

 def register(response):
    if response.method == 'POST':
        form = RegisterForm(response.POST)
        if form.is_valid:
            form.save()

            username = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password1')
            newUser =  authenticate(response, username=username, password=password)
            if newUser:
                login(response, newUser)
                return redirect('/inputuserinfo')

    else:
        form = RegisterForm()

        a = form.fields['username']
        b = form.fields['email']
        c = form.fields['password1']
        d = form.fields['password2']

    return render(response, 'register/register.html', {'form' : form}) 
  

Комментарии:

1. вам следует попробовать поставить else блок после if newUser . Возможно, ваш код не попадает в if блок. И отправка одной и той же формы дважды с одним и тем же csrf токеном приведет к сбою проверки токена, что и ожидалось.

2. Спасибо. Итак, что я должен поместить в else блок тогда?