1. 程式人生 > >django實現自定義許可權控制

django實現自定義許可權控制

自定義許可權

django自定義許可權使用permissions這個meta屬性,例如:
#encoding = utf-8
from django.db import models

# Create your models here.
# rights control
class tofmodel(models.Model):
    class Meta:
        permissions = (
            ("riskview_all", "Can see all the pages"),
            ("riskview_dev", "Can see dev page"),
            ("riskview_transfer", "Can see transfer page"),
        )
修改model後同步資料庫資料 python manage.py makemigrations python manage.py migrate

許可權修飾器

permission_required(perm, login_url=None, raise_exception=False) :檢查使用者是否具有特定的許可權,可以自定義使用者不具有要求許可權是重定向到登陸頁面,以及是否丟擲異常等等
@login_required(login_url='/login/')
@permission_required('tof.riskview_all',raise_exception=True)
def index(request):
    return render(request,'index.html')

第一個修飾器可以讓使用者進行登入,登入後若使用者未有許可權,則丟擲異常,進入一個403.html的頁面,使用者可以自定義這個頁面並放置在templates資料夾下即可,若沒有,則會出現系統預設403的報錯文字 Just like the has_perm() method, permission names take the form "<app label>.<permission
codename>" (i.e. polls.can_vote for a permission on a model in the polls application).

許可權授予

建立管理員帳號python manage.py createsuperuser 登入django後臺管理系統,在使用者系統中,授予或者刪除相應許可權。