CrispyError:as_crispy_field 仅针对电子邮件字段传递了无效或不存在的字段

问题描述 投票:0回答:1

我无法从 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

python django django-crispy-forms
1个回答
0
投票

解决方案: 这是我导入时的错误。

在 Views.py 中我应该导入

from . forms import CreateUserForm

但是我导入了:

from .forms import UserCreationForm

© www.soinside.com 2019 - 2024. All rights reserved.