Ошибки формы django не отображаются в шаблоне
Я использую базовую форму регистрации django и не получаю никаких ошибок. Я видел кучу ответов, но ничего не работает для меня. Я не уверен, что это из-за того, что у меня есть пользовательский css для страницы или bootstrap или что-то еще. В общем, как мне отобразить ошибки в данном конкретном случае.
Вот моя форма:
<div class="form-content">
<h1>Sign Up</h1>
{% if user.is_authenticated == False %}
<form method="POST">
{% csrf_token %} {{form.as_p}}
<button class="btn form-btn">Sign Up</button>
<h4><span>or</span></h4>
<a
class="btn google-btn"
href="{% provider_login_url 'google' %}"
role="button"
style="text-transform: none; width: 100%"
>
<img
width="20px"
style="margin-bottom: 3px; margin-right: 5px"
alt="Google sign-in"
src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/53/Google_%22G%22_Logo.svg/512px-Google_%22G%22_Logo.svg.png"
/>
Sign up with Google
</a>
</form>
{% else %}
<p>You're already registered...</p>
{% endif %}
</div>
Вот мое мнение:
class UserRegistration(generic.CreateView):
form_class = RegisterForm
template_name = 'registration/registration.html'
def form_valid(self, form):
user = form.save()
form.registration_notification()
login(self.request, user, backend='django.contrib.auth.backends.ModelBackend')
return redirect(self.request.GET.get('next'))
и форма:
class RegisterForm(UserCreationForm):
email = forms.EmailField()
first_name = forms.CharField(max_length=100)
last_name = forms.CharField(max_length=100)
class Meta:
model = User
fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2')
def registration_notification(self):
email = self.cleaned_data['email']
username = self.cleaned_data['username']
if self.is_valid():
registration_notification_task.delay(email, username)
Я не уверен, где возвращать ошибки или где проверять форму, и никакие ответы на другие вопросы не помогли в моей ситуации. Теперь, когда я отправляю недействительную форму, нет никаких ошибок, страница просто не отправляется. Нет даже ошибки в сетевой вкладке, так что это, вероятно, происходит на стороне html.
Сравнивая с моими обычными формами, возможно, в вашей кнопке не хватает type = submit.
<button type="submit" class="btn form-btn">Sign Up</button>