#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
блок тогда?