我正在创建一个有4种类型用户的Django站点;
注意到我计划创建自定义界面而不使用内置管理界面.实现此用户结构的最佳方法是什么?我更喜欢使用Django的内置身份验证系统(管理密码salting和散列,以及会话管理等),但如果它是安全的并且生产就绪,我将愿意使用其他一些身份验证系统.
编辑:此外,我的计划是使用1个登录屏幕访问该网站,并利用权限和用户类型来确定每个用户的仪表板上可用的内容.
编辑:是否可以通过为每个用户类型使用应用程序来实现此目的,如果是这样,如何使用单个登录屏幕完成此操作.
注意:自从版本1.5以来Django的用户模型更新后,我再次提出这个问题.
我正在重建并改进已经存在的Django站点并将其从Webfaction转移到Heroku,从Amazon的SimpleDB转移到Heroku Postgres(尽管在开发时在Sqllite3上进行本地测试).我正在做的很多事情都是使用内置的Django功能,比如Django管理员,用户身份验证等.
从概念上讲,该网站有两种用户:学生和企业.这两种类型的用户具有完全不同的权限和存储的信息.情况就是这样,在网站的原始结构中,我们建立了如下数据模型:
Users
ID (primary_key)
Business_or_Student ('B' if business, 'S' if student)
email (unique)
password (hashed, obviously)
...
Students
ID (Foreignkey on Users)
<more information>
...
Businesses
ID (Foreignkey on Users)
<more information>
...
Run Code Online (Sandbox Code Playgroud)
这对我们来说非常有效,我们在Users表中提供了简单的用户信息,然后在Students and Businesses表中提供了更详细的信息.获取用户的完整个人资料需要此伪代码:
def get_user_profile(id):
if Users(id=id).Business_or_Student = 'B':
return Businesses(id=id)
else:
return Students(id=id)
Run Code Online (Sandbox Code Playgroud)
在移动过程中,我发现Django的内置User对象具有相当有限的功能,我不得不用UserProfile我创建的类扩展它,然后有额外的表Student和Business表.鉴于我在Django管理员中所做的所有补丁,并且对Django模型相对不熟悉,因为我总是采用不同的方式,我不确定这是不是最好的方法,或者我应该只需将企业和学生的所有信息都放在UserProfile表格中,然后将两者区分为不同的组,或者甚至在内置User对象中有一些方法可以做到这一点.
由于企业和学生也有不同的界面,我正在认真考虑在我的Django项目中将两者设置为不同的应用程序,从而完全分离他们的视图,模型等.这看起来像是这样的:
MyProject/
MyProject/ (project folder, Django 1.4)
mainsite/
students/
businesses/
Run Code Online (Sandbox Code Playgroud)
我最关心的一个问题是Django Admin.在扩展中User …