当django-registration不支持django 1.5和自定义用户模型时。我正在尝试使用django-allauth,从最初看它是很棒的产品。
问题我有 - 需要用户名字段,但在我的应用程序中我没有用户名。所以,allauth文档说:
**Available settings:**
ACCOUNT_AUTHENTICATION_METHOD (="username" | "email" | "username_email")
指定要使用的登录方法 - 用户是否通过输入用户名,电子邮件地址或其中任何一个来登录。
好的,我完成了,并且收到了错误:
AssertionError at /accounts/signup/
No exception supplied
models.py:
class MyUser(AbstractBaseUser, PermissionsMixin):
title = models.CharField ('Name', max_length=100)
email = models.EmailField('Email', max_length=255, unique=True)
...
settings.py
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_AUTHENTICATION_METHOD = ('email')
AUTH_USER_MODEL = 'internboard.MyUser'
我做错了什么?
答案 0 :(得分:41)
谢谢,我找到了正确的设置:
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USERNAME_REQUIRED = False
答案 1 :(得分:7)
如果您在堆栈跟踪中遇到django.core.exceptions.FieldDoesNotExist: Account has no field named 'username'
时遇到错误USER_MODEL_USERNAME_FIELD
,则还需要将ACCOUNT_USER_MODEL_USERNAME_FIELD
设置为None
(或者适当的字段)用例)。所需的全套设置如下:
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USER_MODEL_USERNAME_FIELD = None
ACCOUNT_USERNAME_REQUIRED = False
Custom User Models的django-allauth文档更详细地解释了此设置,Configuration中列出了默认值。
答案 2 :(得分:0)
自定义用户模型的可能原因可能是以下任意一种;
a)如果您已在模型中完全淘汰了“用户名”作为字段,那么请确保在模型中定义变量:
USERNAME_FIELD = 'email'
还要确保在电子邮件的字段定义中,字段属性;
unique = True
也包括在内。
b)在自定义用户admin(必须强制配置)中,必须将form和add_form变量定义为继承自“ ModelForm”或UserCreationForm(对于add_form变量)。
c)如果您要继承allauth的注册表单,则必须在设置中声明:
ACCOUNT_USER_MODEL_USERNAME_FILED = None
最重要的是,确保编写测试以确保表单发布数据并将其保存到数据库。谢谢。希望有人能对此有所帮助.....请记住,这可能很难,但绝不可能!!!快乐的“ Djangoing”。...