Представление регистрации в Django с отредактированной UserCreationForm не работает
Я использую Django для создания приложения для школьного проекта.
Моя попытка аутентификации с использованием Django's auth и Usercreationform (но модифицированная, чтобы включить email), похоже, не работает. Я уже протестировал мои представления входа/выхода, используя пользователя admin, и это работает довольно хорошо, но я не могу сохранить новых пользователей в моем приложении.
Мне пришлось изменить форму создания пользователя, чтобы она включала email, потому что в будущем я предполагаю фильтровать, с какими email люди регистрируются в приложении (только институциональные email должны работать в этом приложении, но я еще не реализовал это), но каждый раз, когда я отправляю форму регистрации пользователя, она говорит, что форма недействительна в отладке.
Я создал форму в файле forms.py
from django.contrib.auth.forms import UserCreationForm
from django import forms
from django.contrib.auth.models import User
class CustomUserForm(UserCreationForm):
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
в моем views.py я импортировал форму и настроил ее на отладку того, какие поля не работают, когда форма не действительна
from django.contrib.auth.forms import AuthenticationForm, UserCreationForm
from .forms import CustomUserForm
def register_view(request):
form = CustomUserForm(request.POST)
if form.is_valid():
user_obj = form.save()
form.save()
return redirect('/login')
else:
print("FORM IS INVALID.")
for field in form:
print("Field Error:", field.name, field.errors)
context = {'form': form}
return render(request, 'register_view.html', context)
в моем файле шаблона register_view.html я создал свою форму таким образом:
{% extends "base.html" %}
{% block content %}
{% if not request.user.is_authenticated %}
<div class="login-form">
<form method="'POST" action="">
{% csrf_token %}
<h1 class="login_title">TITLE</h1>
<div class="content">
<div class="input-field">
{{ form.username.label }} : {{ form.username }}
</div>
<div class="input-field">
{{ form.email.label }} : {{ form.email }}
</div>
<div class="input-field">
{{ form.password1.label }} : {{ form.password1 }}
</div>
<div class="input-field">
{{ form.password2.label }} : {{ form.password2 }}
</div>
</div>
<div class="action">
<button class="btn back">
<a href="{% url 'frontend:test_home_view' %}">back</a>
</button>
<button type="submit" class="btn send" name="Create User">register</button>
</div>
</form>
</div>
{% else %}
// tells the user they are already logged in and asks if they want to log out instead.
{% endif %}
{% endblock %}
Я попытался отправить форму в моем приложении localhost для тестирования, используя фиктивные основные данные (я убедился, что они правильные), и он печатает "форма недействительна", и он печатает каждое поле, как будто оно имеет ошибку, но я не понимаю, почему это так? Я пропустил какой-то важный шаг?
Журнал консоли:
FORM IS INVALID.
Field Error: username <ul class="errorlist"><li>Este campo es obligatorio.</li></ul>
Field Error: email
Field Error: password1 <ul class="errorlist"><li>Este campo es obligatorio.</li></ul>
Field Error: password2 <ul class="errorlist"><li>Este campo es obligatorio.</li></ul>
[12/Nov/2022 19:29:28] "GET /register/?csrfmiddlewaretoken=0maSCK00pPyfxvPR2skuUQdetYxviuCvb7Vr8CzNXJtzsBNMnvxKTj15M6bnAIOu&username=abc&email=abc%40mail.com&password1=abc111&password2=abc111&Create+User= HTTP/1.1" 200 2530
Este campo es obligatorio = Это поле является обязательным. Приложение на испанском языке.
Я пытался отладить ошибку, почему мое представление регистра не сохраняет форму и вместо этого помечает форму как недействительную, но оно помечает каждое поле как недействительное поле, я не понимаю, почему оно не работает ни с одним полем.