我无法从 django 中的用户模型中公开电子邮件字段,如果我从 register.html 中删除电子邮件字段,则不会出现错误。 另外,如果我使用 {{ form }} 它不会显示电子邮件字段。它显示了用户名、密码1和密码2,没有错误。
models.py:
from django.contrib.auth.models import User
class Profile(models.Model):
profile_pic = models.ImageField(null=True, blank=True, default='default.jpg')
# FK
user = models.ForeignKey(User, max_length=10, on_delete=models.CASCADE, null=True)
forms.py:
from django.contrib.auth.models import User
class CreateUserForm(UserCreationForm):
class Meta:
model = User
fields= ['username','email', 'password1', 'password2']
views.py: 从 .forms 导入 UserCreationForm
def register(request):
form = UserCreationForm()
if request.method == "POST":
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
return redirect("my-login")
context = {'form': form}
return render(request, "register.html", context=context)
注册.html
{% load static %}
{% load crispy_forms_tags %}
.
.
.
<form action="" method="POST" autocomplete="off">
{% csrf_token %}
{{ form.username|as_crispy_field }}
# error is here
{{ form.email|as_crispy_field }}
{{ form.password1|as_crispy_field }}
{{ form.password2|as_crispy_field }}
<input type="submit" value="submit" />
</form>
Django 4.2.10
django-bootstrap4 24.1
django-crispy-forms 1.14.0
枕头10.2.0
轮子0.42.0
解决方案: 这是我导入时的错误。
在 Views.py 中我应该导入
from . forms import CreateUserForm
但是我导入了:
from .forms import UserCreationForm