django 框架之 許可權篇

2021-09-24 11:19:47 字數 3271 閱讀 2246

使用者表,許可權表,角色表

當乙個使用者訪問url,先登入,當登入後拿到這個使用者的角色和許可權

當使用者去訪問其他的url的時候,判斷這個url是否有這個許可權,有就可以訪問,沒有就不讓訪問

在中介軟體裡面建立白名單,可以讓使用者訪問的頁面

第一步建立表:

from django.db import models

# create your models here.

# 使用者表

class user(models.model):

name = models.charfield(max_length=32)

pwd = models.charfield(max_length=32)

roles = models.manytomanyfield('role')

def __str__(self):

return self.name

# 許可權表

class role(models.model):

title = models.charfield(max_length=32)

permissions = models.manytomanyfield('permission')

def __str__(self):

return self.title

class permission(models.model):

title = models.charfield(max_length=32)

url = models.charfield(max_length=32)

def __str__(self):

return self.title

----

在terminal執行: python manage.py makemigrations

在terminal執行: python manage.py migrate

第二步:使用django中的admin新增資料

from django.contrib import admin

# register your models here.

from project import models

class permissionadmin(admin.modeladmin):

list_display = ['pk', 'title', 'url']

class roleadmin(admin.modeladmin):

list_display = ['pk', 'title']

admin.site.register(models.user)

admin.site.register(models.role)

admin.site.register(models.permission, permissionadmin)

在pycharm 中的terminal建立超級使用者:

python manage.py createsuperuser

第三步驟:將使用者名稱和session放入到session

# 如果有使用者,代表著登入成功

if user_obj:

# 寫入session

request.session['user'] = user_obj.name

per_obj = models.permission.objects.filter(role__user__name=user_obj.name).distinct()

permisson_list = [i.url for i in per_obj]

request.session['permission_list'] = permisson_list

return httpresponse('登入成功')

return render(request, 'login.html')第四步:與project同級建立中介軟體 middleware.py,同時在settings.py中的middleware,加入中介軟體:

#登入認證

user = request.session.get('user')

if not user:

return redirect('login')

#認證for item in request.session['permission_list']:

print(item)

print(request.path)

reg = '^%s$'%item

ret = re.search(reg, request.path)

if ret:

return none

else:

return httpresponse('沒有許可權')

python之Django框架篇 基礎一複習

0.django安裝 pip3 install django 1.11.11 pip3 install i django 1.11.11 pycharm安裝的時候 注意不要勾選那個選項 你們懂得 1.django專案的啟動 1.命令列啟動 在專案的根目錄下 也就是有manage.py的那個目錄 執行...

django框架之安裝

我們安裝的是django 1.11.14 版本 我們先用pycham先裝 files選單欄下選擇setting,然後再找project下的直譯器project interpreter,然後點選右邊的加號按鈕,在搜尋框中搜尋django,選擇版本,雙擊安裝。看圖 然後再介紹用pip安裝 開啟cmd,在...

Linux之許可權篇

rachel bigdata senior02 ls l total 64 rwxrw r 1 root root 1213 feb 2 09 39 abc第乙個字元代表檔案 目錄 d 鏈結 l 其餘字元每3個一組 rwx 讀 r 寫 w 執行 x 第一組rwx 檔案所有者的許可權是讀 寫和執行 第...