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)
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()