一 导言
设计一个好的用户系统往往不是那么容易,Django提供的用户系统可以快速实现基本的功能,并可以在此基础上继续扩展以满足我们的需求。
先看看Django的用户系统都提供哪些功能:
提供用户模块(User Model)
权限验证(默认添加已有模块的增加删除修改权限)
用户组与组权限功能
用户鉴权与登录功能
与用户登录验证相关的一些函数与装饰方法
如配置了Django的用户系统,仅需调用Django提供的几个函数,便可实现用户的登录,注销,权限验证等功能。例如以下情景
1.登录
#some_view.py
from django.contrib.auth importauthenticate, logindeflogin(request):
username= request.POST['username']
password= request.POST['password']#Django提供的authenticate函数,验证用户名和密码是否在数据库中匹配
user = authenticate(username=username, password=password)if user is notNone:#Django提供的login函数,将当前登录用户信息保存到会话key中
login(request, user)#进行登录成功的操作,重定向到某处等
...else:#返回用户名和密码错误信息
...
2.注销
#some_view.py
from django.contrib.auth importlogoutdeflogout(request):#logout函数会清除当前用户保存在会话中的信息
logout(request)
3.验证是否登录
#some_view.py
defsome_fuction(request):
user=request.userif user.is_authenticated:#已登录用户,可以往下进行操作
else:#返回要求登录信息
4.验证是否有权限
#some_view.py
defsome_fuction(request):
user=request.userif user.has_perm('myapp.change_bar'):#有权限,可以往下进行操作
else:#返回禁止访问等信息
二 用户模块
Django的用户模块类定义在auth应用中,如要直接使用Django的用户类,在setting配置文件中的INSTALLAPP添加一行django.contrib.auth。
这样就可以在代码中直接用User类创建用户:
from django.contrib.auth.models importUser
user= User.objects.create_user('john', 'lennon@thebeatles.com', 'johnpassword')
user.last_name= 'Lennon'user.save()
看看Django的源码User类定义了什么属性:
classUser(Abst