我错过了一些东西。
我的 Django 项目中有一个自定义用户模型。它使用电子邮件作为其用户名字段。
我的项目/用户/models.py:
class CustomUser(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(
verbose_name='E-mail address',
max_length=255,
unique=True,
db_index=True,
)
is_active = models.BooleanField(default=True)
USERNAME_FIELD = 'email'
objects = CustomUserManager()
...
设置.py:
AUTH_USER_MODEL = 'users.CustomUser'
我编写了一个从我的 HTML 登录表单接收 POST 请求的视图,并调用 stock auth login 视图以获取其响应:
我的项目/用户/views.py:
from django.contrib.auth.views import login
...
def log_in(request, template_name):
response = login(request, template_name=template_name)
return response
(它会做更多的事情,但我已经注释掉了其他代码以消除它作为我看到的不需要的行为的原因。)
当我尝试登录浏览器时(使用我最初创建的超级用户的电子邮件地址和密码syncdb
),我收到一个表单错误:
username: This field is required.
怎么来的?我认为 stock auth login 视图将使用内置的 auth AuthenticationForm
,它显然适用于AbstractBaseUser
.