django>=1.5的自定义用户模型,其行为与django的默认用户相同,但使用电子邮件而不是用户名。

django-custom-user的Python项目详细描述


https://img.shields.io/pypi/v/django-custom-user.svghttps://img.shields.io/travis/jcugat/django-custom-user/master.svghttps://img.shields.io/codecov/c/github/jcugat/django-custom-user/master.svghttps://img.shields.io/pypi/dm/django-custom-user.svg

django的自定义用户模型>;=1.5,其行为与django的默认用户相同,但没有用户名字段。使用电子邮件作为用户名字段进行身份验证。

快速启动

  1. 使用您喜爱的python包管理器安装django自定义用户:
pip install django-custom-user
  1. 'custom_user'添加到INSTALLED_APPS设置:
INSTALLED_APPS=(# other apps'custom_user',)
  1. AUTH_USER_MODEL设置设置为使用EmailUser
AUTH_USER_MODEL='custom_user.EmailUser'
  1. 创建数据库表:
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)

  • 初次发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java OnResizeListener或OnDrawListener或类似的东西   java Orika映射嵌套子列表   保存时java Heroku请求超时代码H12   数据库在Java中出现socket读取超时异常的原因是什么?   java如何更改来自Sqlite数据库的特定数据在Listview中的行颜色   java JAXB解组器无法正确处理XML中的列表   java Android日期时区让我抓狂   java不透明属性在Swing中如何工作?   eclipse从JavaEE代码生成流程图   java如何在Hibernate中从相关表中获取计数   java Glassfish部署了项目的依赖项库   java使内容适合JavaFx中的WebView   java不满意的链接错误libcrypto。所以1.0.0   循环中java数组的使用   java找出哪个包调用服务