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