django写商业网站的时候用户系统是自己重写还是用自带的?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django写商业网站的时候用户系统是自己重写还是用自带的?相关的知识,希望对你有一定的参考价值。
最好是是自带的,因为基本够用了,如果不够用,User model有个get_profile函数,可以得到和User对象关联的Profile对象,这个Profile可以有其他个人信息,而且大多数第三方django app都是依赖自带User。另外django1.5现在也支持自定义 User class,你可以看下。追问
嗯嗯 谢谢你啊 那么后台管理界面一般是自己实现还是用自带的呢? 以前只用django写过玩具小网站,现在需要写一个商业用的站,能说说用django需要注意哪些吗?还有需要用到的插件?谢谢你啊~
追答django的admin是很强大灵活的,如果是嫌界面不好的话,可以用django-admin-tools和django-admin-tools-bootstrap。django本身就可以用于线上商业网站,已知的bug自然会被修复,我不知道有什么需要特别注意的,django只是个框架,用的好坏,取决于你的代码质量。插件这个看自己的需求,google就行,推荐一个Pinax吧。
参考技术A 用户系统的django自己带有的,也可以采用 第三方的 用户模块 来实现:django-registration
重写用户模型
我们在设计models数据库的用户管理会用到各种各种字段,比如用户名,密码,用户登录状态等,这些字段如果自己来写的话相当麻烦,这时候可以用django系统自动生成的user表。
来看auth_user的表结构:
但是想要在django内建的User模型不一定适合你的需求。django允许你通过 AUTH_USER_MODEL 设置 覆盖User模型。
AUTH_USER_MODEL = "myapp.MyUser"
上面的值表示Django 应用的名称(必须位于 INSTALLED_APPS 中) 和你想使用的User 模型的名称。
改变 AUTH_USER_MODEL 对你的数据库结构有很大的影响。它改变了一些会使用到的表格,并且会影响到一些外键和多对多关系的构造。如果你打算设置 AUTH_USER_MODEL , 你应该在创建任何迁移或者第一次运行manage.py migrate 前设置它。
错误提示:
如果你在迁徙的过程中出现以下两种错误,那么恭喜你
错误一、
auth.User.groups: (fields.E304) Reverse accessor for ‘User.groups‘ clashes
请检查是否在项目中配置
settings.py AUTH_USER_MODEL = ‘myapp.MyUser‘
错误二、
django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency user.0001_initial on database ‘default‘
请将系统自动生成的auth_user表删除,这是因为Django中有一个原生的User模型类,admin的模型依赖这个模型类,由于前面一个应用中的模型类User继承了AbstractUser类。
但是在删除auth_user的时候你可能会遇到外键关联等问题导致auth_user不能删除的问题,那么请将系统自动生成的表全部删除。
(将所有表删除)
在后续的迁移过程中,这些表都会重新建立。
以上是关于django写商业网站的时候用户系统是自己重写还是用自带的?的主要内容,如果未能解决你的问题,请参考以下文章
『Django』第N+1节 Django自带的认证系统 - auth