django>=1.5的自定义用户模型,其行为与django的默认用户相同,但使用电子邮件而不是用户名。
django-custom-user的Python项目详细描述
django的自定义用户模型>;=1.5,其行为与django的默认用户相同,但没有用户名字段。使用电子邮件作为用户名字段进行身份验证。
快速启动
- 使用您喜爱的python包管理器安装django自定义用户:
pip install django-custom-user
- 将'custom_user'添加到INSTALLED_APPS设置:
INSTALLED_APPS=(# other apps'custom_user',)
- 将AUTH_USER_MODEL设置设置为使用EmailUser:
AUTH_USER_MODEL='custom_user.EmailUser'
- 创建数据库表:
python manage.py migrate
或者如果您使用的是旧的django版本(<;=1.6):
python manage.py syncdb
用法
与其直接引用EmailUser,不如使用get_user_model()引用用户模型,如Django documentation中所述。例如:
fromdjango.contrib.authimportget_user_modeluser=get_user_model().objects.get(email="user@example.com")
定义外键或与EmailUser模型的多对多关系时,应使用AUTH_USER_MODEL设置指定自定义模型。例如:
fromdjango.confimportsettingsfromdjango.dbimportmodelsclassArticle(models.Model):author=models.ForeignKey(settings.AUTH_USER_MODEL)
扩展电子邮件用户模型
通过继承AbstractEmailUser,可以轻松地扩展EmailUser。例如:
fromcustom_user.modelsimportAbstractEmailUserclassMyCustomEmailUser(AbstractEmailUser):""" Example of an EmailUser with a new field date_of_birth """date_of_birth=models.DateField()
记住将AUTH_USER_MODEL设置更改为新类:
AUTH_USER_MODEL='my_app.MyCustomEmailUser'
如果使用adminsite,请将以下代码添加到my_app/admin.py文件中:
fromdjango.contribimportadminfromcustom_user.adminimportEmailUserAdminfrom.modelsimportMyCustomEmailUserclassMyCustomEmailUserAdmin(EmailUserAdmin):""" You can customize the interface of your model here. """pass# Register your models here.admin.site.register(MyCustomEmailUser,MyCustomEmailUserAdmin)
更改日志
版本0.7(2017-01-12)
- 在emailuserchangeform中修复了更改密码链接(感谢igor gai和rubengril)
版本0.6(2016-04-03)
- 添加了迁移(感谢所有人的帮助)。
升级后如何应用迁移:
django 1.7
对于此版本,只需运行以下命令。
python manage.py migrate custom_user 0001_initial_django17 --fake python manage.py migrate custom_user
django 1.8
此版本在没有迁移的情况下无法工作,这意味着您的迁移将与此版本中包含的新迁移发生冲突。
如果使用django的MIGRATION_MODULES设置添加迁移,请删除包含迁移模块的文件夹并从配置中删除该设置。
如果您刚刚运行python manage.py makemigrations,则迁移位于系统或Virtualenv的site-packages文件夹中。您可以检查运行此命令的位置,然后删除其中的文件夹migrations:
python -c "import os; import custom_user; print(os.path.dirname(custom_user.__file__))"
您可以检查是否已成功删除运行此命令的迁移,您不应该再看到custom_user部分:
python manage.py migrate --list
旧的迁移完成后,运行以下命令完成:
python manage.py migrate custom_user 0002_initial_django18 --fake
版本0.5(2014-09-20)
- django 1.7兼容(感谢j0hnsmith)。
- 使用appconfig在adminsite中自定义应用程序详细名称。
版本0.4(2014-03-06)
- create_user()和create_superuser()manager方法现在接受的是_active和_staff作为参数(感谢edil kratskih)。
版本0.3(2014-01-17)
- adminsite现在在子类化abstractemailuser时工作(多亏了ivan virabyan)。
- Django 1.6.1更新了模型。
版本0.2(2013-11-24)
- Django 1.6兼容(感谢Simon Luijk)。
版本0.1(2013-04-09)
- 初次发布。