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

35

当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'

我做错了什么?

3个回答

61

谢谢,我找到了适合我的任务的正确设置。

ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USERNAME_REQUIRED = False

2
嗨,Rukomoynikov,你需要自己制作用户模型才能使其正常工作吗?如果是的话,它具体是什么样子(如果你愿意分享的话)? - ademartini
1
来自官方文档的更多最新资源。http://django-allauth.readthedocs.org/en/latest/advanced.html#custom-user-models - attomos
唯一的问题是,如果用户使用 Facebook 注册,则 Django 用户帐户中没有用户名。 - SudoKid

48

如果您在堆栈跟踪中遇到错误 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

这个设置在django-allauth文档中详细解释了自定义用户模型,默认值在配置中概述。


1
非常感谢,这修复了FieldDoesNotExist错误。 - Phifo

2

可能的原因之一是自定义用户模型中以下任何一个;

a)如果您在模型中完全删除了“用户名”作为字段,则请确保在模型中定义变量:

               USERNAME_FIELD = 'email'

此外,请确保在电子邮件的字段定义中,字段属性;
              unique = True

也包括在内。

b) 在您的自定义用户管理界面(必须进行配置),表单和add_form变量必须定义为继承自“ModelForm”或UserCreationForm(对于add_form变量)。

c) 如果您正在继承allauth的注册表单,则必须在设置中声明:

 ACCOUNT_USER_MODEL_USERNAME_FILED = None

最重要的是,确保编写测试以确保表单发布数据并保存到数据库。谢谢。希望有人会觉得这很有帮助.....记住,它可能很难,但从来不是不可能的!!!祝你“Django之旅”愉快....


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接