亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

django 通過url實現(xiàn)簡單的權(quán)限控制的例子

 更新時間:2019年08月16日 19:12:29   作者:喝完這杯還有一箱  
今天小編就為大家分享一篇django 通過url實現(xiàn)簡單的權(quán)限控制的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

根據(jù)用戶權(quán)限設(shè)定用戶可以訪問哪些頁面,用django實現(xiàn)一個簡單的demo。

1.models.py 文件

class level(models.Model):
  l_name = models.CharField(max_length=50,verbose_name="等級名稱")
  l_permission = models.OneToOneField("permission")
  def __str__(self):
    return self.l_name
 
 
class userinfo(models.Model):
  u_name = models.CharField(max_length=50,verbose_name="用戶名稱")
  u_user = models.OneToOneField(User)
  u_level = models.ForeignKey(level,related_name="lev")
 
  def __str__(self):
    return self.u_name
 
 
class permission(models.Model):
  p_name = models.CharField(max_length=50,verbose_name="權(quán)限名稱")
  p_menu = models.ManyToManyField("menu")
 
  def __str__(self):
    return self.p_name
 
class menu(models.Model):
  m_name = models.CharField(max_length=50,verbose_name="菜單名稱")
  m_url = models.CharField(max_length=50,verbose_name="菜單地址",blank=True,null=True)
  def __str__(self):
    return self.m_name
 
class nickname(models.Model):
  n_nickname = models.CharField(max_length=50,verbose_name="昵稱",blank=True,null=True)
  n_user = models.ForeignKey(userinfo,blank=True,null=True,related_name="nick")
 
  def __str__(self):
    return self.n_nickname

2.settings.py 文件

URL_WHITE_LIST = ['index', 'login', 'logout']

設(shè)置路由白名單。

3.views.py 文件

def url_check(fun):
  def check(request,*args,**kwargs):
    if request.session.get("p_l",None):
      require_list = pickle.loads(request.session.get("p_l"))
      request_url = request.path.replace("/","")
      ua = request.META.get('HTTP_USER_AGENT',None)
      if request_url in require_list or request_url in IP_WHITE_LIST:
        return fun(request,*args,**kwargs)
      else:
        error_msg = "沒有權(quán)限!"
        menu_ = pickle.loads(request.session.get("p_l"))
        return render(request,"index.html",{"error_msg":error_msg,"menu":menu_})
    else:
      return HttpResponseRedirect(reverse("login"))
  return check

定義一個路由檢測的閉包方法,根據(jù)用戶登錄時的session信息,獲取該用戶角色可以訪問的路由,如果當(dāng)前訪問的地址不在白名單或是session記錄里,返回錯誤信息。

@url_check
def menu(request,menuname):
  return HttpResponse("<h1>%s</h1>"%menuname)

在之后的方法上添加該閉包,即可實現(xiàn)簡易的路由控制。

以上這篇django 通過url實現(xiàn)簡單的權(quán)限控制的例子就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python設(shè)計模式中的結(jié)構(gòu)型橋接模式

    Python設(shè)計模式中的結(jié)構(gòu)型橋接模式

    這篇文章主要介紹了Python設(shè)計模式中的結(jié)構(gòu)型橋接模式,橋接模式即Bridge?Pattern,將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立地變化.下面來看看文章的詳細(xì)內(nèi)容介紹吧
    2022-02-02
  • Linux安裝Python3如何和系統(tǒng)自帶的Python2并存

    Linux安裝Python3如何和系統(tǒng)自帶的Python2并存

    這篇文章主要介紹了Linux安裝Python3如何和系統(tǒng)自帶的Python2并存,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • python+pygame實現(xiàn)坦克大戰(zhàn)小游戲的示例代碼(可以自定義子彈速度)

    python+pygame實現(xiàn)坦克大戰(zhàn)小游戲的示例代碼(可以自定義子彈速度)

    這篇文章主要介紹了python+pygame實現(xiàn)坦克大戰(zhàn)小游戲---可以自定義子彈速度,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • Django中文件上傳和文件訪問微項目的方法

    Django中文件上傳和文件訪問微項目的方法

    這篇文章主要介紹了Django中文件上傳和文件訪問微項目的方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • Python讀取Excel數(shù)據(jù)實現(xiàn)批量生成合同

    Python讀取Excel數(shù)據(jù)實現(xiàn)批量生成合同

    Python在自動化辦公方面具有極大的優(yōu)勢,可以解決我們工作中遇到的很多重復(fù)性問題。本文將通過Python讀取Excel數(shù)據(jù)實現(xiàn)批量生成合同,需要的可以參考一下
    2022-05-05
  • Django跨域資源共享問題(推薦)

    Django跨域資源共享問題(推薦)

    跨域資源共享(CORS) 是一種機(jī)制,它使用額外的 HTTP 頭來告訴瀏覽器 讓運(yùn)行在一個 origin (domain) 上的Web應(yīng)用被準(zhǔn)許訪問來自不同源服務(wù)器上的指定的資源。這篇文章主要介紹了Django跨域資源共享問題小結(jié),需要的朋友可以參考下
    2020-03-03
  • Python使用tkinter模塊實現(xiàn)GUI界面的學(xué)生信息管理系統(tǒng)流程分步詳解

    Python使用tkinter模塊實現(xiàn)GUI界面的學(xué)生信息管理系統(tǒng)流程分步詳解

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)簡易學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2023-01-01
  • 如何使用Python多線程測試并發(fā)漏洞

    如何使用Python多線程測試并發(fā)漏洞

    這篇文章主要介紹了如何使用Python多線程測試并發(fā)漏洞,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • python操作MySQL數(shù)據(jù)庫的方法分享

    python操作MySQL數(shù)據(jù)庫的方法分享

    堅持每天學(xué)一點,每天積累一點點,作為自己每天的業(yè)余收獲,這個文章是我在吃飯的期間寫的,利用自己零散的時間學(xué)了一下python操作MYSQL,所以整理一下
    2012-05-05
  • Python實現(xiàn)的視頻播放器功能完整示例

    Python實現(xiàn)的視頻播放器功能完整示例

    這篇文章主要介紹了Python實現(xiàn)的視頻播放器功能,結(jié)合完整實例形式分析了Python基于pyglet庫實現(xiàn)視頻播放功能的相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02

最新評論