从django-allauth中删除"用户名"字段

Ruk*_*kov 20 django django-allauth

当django-registration不支持django 1.5和自定义用户模型时.我正在尝试使用django-allauth,从最初看它是很棒的产品.

问题我有 - 需要用户名字段,但在我的应用程序中我没有用户名.所以,allauth文档说:

**Available settings:**
ACCOUNT_AUTHENTICATION_METHOD (="username" | "email" | "username_email")
Run Code Online (Sandbox Code Playgroud)

指定要使用的登录方法 - 用户是否通过输入用户名,电子邮件地址或两者之一来登录.

好的,我完成了,并得到了错误:

AssertionError at /accounts/signup/
No exception supplied
Run Code Online (Sandbox Code Playgroud)

models.py:

class MyUser(AbstractBaseUser, PermissionsMixin):
    title = models.CharField ('Name', max_length=100)
    email = models.EmailField('Email', max_length=255, unique=True)
    ...
Run Code Online (Sandbox Code Playgroud)

settings.py

ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_AUTHENTICATION_METHOD = ('email')
AUTH_USER_MODEL = 'internboard.MyUser'
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

Ruk*_*kov 43

谢谢,我发现,我的任务的正确设置:

ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USERNAME_REQUIRED = False
Run Code Online (Sandbox Code Playgroud)

  • 嗨Rukomoynikov,您是否必须为此设置自己的用户模型?如果是这样,它究竟是什么样的(如果你愿意分享)? (2认同)

Zag*_*ags 8

如果您django.core.exceptions.FieldDoesNotExist: Account has no field named 'username'在堆栈跟踪中遇到错误USER_MODEL_USERNAME_FIELD`,则所需的设置如下:

ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USER_MODEL_USERNAME_FIELD = None
ACCOUNT_USERNAME_REQUIRED = False
Run Code Online (Sandbox Code Playgroud)