User
用户
创建用户:
from django.contrib.auth.models import User
User.objects.create_user(username=username,password=password,email=email)
验证用户:
from django.contrib.auth import authenticate
user = authenticate(username=username,password=password)
if user is not None:
# 这个用户存在数据库中
else:
# 这个用户没有存在这个数据库中
登录
from django.contrib.auth import authenticate, login
def my_view(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
# 登录成功
else:
# 用户没有被激活,不能登录
else:
# 用户名或者密码错误
注销
from django.contrib.auth import logout
def logout_view(request):
logout(request)
# 注销这个用户。他的session信息将被清除掉。
login_required
装饰器
from django.contrib.auth.decorators import login_required
@login_required
def my_view(request):
...
如果没有登录成功,会跳转到settings.LOGIN_URL
指定的URL中。否则,直接执行函数中的内容。
User
模型常用属性和方法
username
:用户名。email
:邮箱。groups
:多对多的组。user_permissions
:多对多的用户权限。is_staff
: 是否是admin
的管理员。is_active
: 是否激活,判断该用户是否可用。is_superuser
: 是否是超级用户。last_login
: 上次登录时间。date_joined
: 注册时间。is_authenticated
: 是否验证通过了。is_anonymous
:是否是匿名用户。set_password(raw_password)
: 设置密码,传原生密码进去。check_password(raw_password)
: 检查密码。has_perm(perm)
: 判断用户是否有某个权限。has_perms(perm_list)
: 判断用户是否有权限列表中的某个列表
Permission
权限模型
在模型中添加权限
from django.db import models
class BlogModel(models.Model):
id = models.AutoField(primary_key=True)
title = models.CharField(max_length=100,blank=True)
content = models.TextField()
class Meta:
permissions = (
('watch_article', u'查看文章的权限'),
('update_article', u'修改文章的权限'),
('delete_article', u'删除文章的权限'),
('add_article', u'发布文章的权限'),
)
在代码中添加权限
from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType
def test(request):
content_type = ContentType.objects.get_for_model(BlogModel)
permission = Permission.objects.create(
codename='can_publish',
name='Can Publish BlogMoModel',
content_type=content_type,
)
permission.save()
return HttpResponse('success')
用户权限操作
myuser.user_permissions.set([permission_list])
myuser.user_permissions.add(permission, permission, ...)
myuser.user_permissions.remove(permission, permission, ...)
myuser.user_permissions.clear()
myuser.has_perm('foo.add_bar')
访问权限的方式:appname
+.
+权限名称
。
Group
模型
- 所属包
django.contrib.auth.models.Group
- 创建
Group
:必须传一个name
参数进去。 Group
操作:
group.permissions.set([permission_list])
group.permissions.add(permission, permission, ...)
group.permissions.remove(permission, permission, ...)
group.permissions.clear()