一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - 利用django-suit模板添加自定義的菜單、頁面及設(shè)置訪問權(quán)限

利用django-suit模板添加自定義的菜單、頁面及設(shè)置訪問權(quán)限

2021-03-16 00:52喂-不吃素的熊寶寶 Python

這篇文章主要給大家介紹了關(guān)于利用django-suit模板添加自定義的菜單、頁面及設(shè)置訪問權(quán)限的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起看看吧

前言

本文主要給大家介紹了利用django-suit模板在管理后臺添加自定義的菜單和自定義的頁面、設(shè)置訪問權(quán)限的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來隨著小編一起看看詳細的介紹吧

 方法如下:

1、先在settings.py里面的SUIT_CONFIG中添加配置,我們平時添加的配置都是app類型的,我們需要自定義頁面的話,就不能用app了,需要用url,這里面我們使用如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# django-suit config
SUIT_CONFIG = {
 'ADMIN_NAME': 'X·X',
 'HEADER_DATE_FORMAT': '',
 'HEADER_TIME_FORMAT': 'H:i',
 'SHOW_REQUIRED_ASTERISK': True,
 'CONFIRM_UNSAVED_CHANGES': True,
 'LIST_PER_PAGE': 20,
 'MENU_OPEN_FIRST_CHILD': True,
 'MENU': (
  # sites是默認原先的app和models
  # 'sites',
  '-',
  {'app': 'auth', 'label': u'權(quán)限管理', 'icon': 'icon-lock'},
  '-',
  {'app': 'duser', 'label': u'平臺用戶', 'icon': 'icon-user'},
  '-',
  {'app': 'dtheme', 'label': u'主題管理', 'icon': 'icon-tags'},
  '-',
  {'app': 'dpost', 'label': u'文章管理', 'icon': 'icon-edit'},
  '-',
  # 如果使用http這種絕對路徑的話,菜單不會展開,且不會標記為active狀態(tài)
  {'url': '/admin/theme/mysql', 'label': u'第三數(shù)據(jù)', 'icon': 'icon-lock'},
  '-',
  {'label': u'統(tǒng)計數(shù)據(jù)', 'icon': 'icon-tags', 'models': (
   {'url': '/admin/theme/data', 'label': u'第一數(shù)據(jù)'},
   {'url': '/admin/theme/show', 'label': u'第二數(shù)據(jù)'}
  )}
 )
}

2、然后就是在urls.py里面添加路由,這個路由一定要添加在admin.site.urls的前面,因為不然的話,它會先去admin.site.urls里面去匹配,造成混亂或報錯。

?
1
2
3
4
5
6
7
8
9
10
from dtheme import views
 
urlpatterns = [
 # 第一個就是我們自己新增的url路徑
 url(r'^admin/theme/data', views.data),
 url(r'^admin/', admin.site.urls),
 url(r'^api/user/', include('duser.urls')),
 url(r'^api/post/', include('dpost.urls')),
 url(r'^api/theme/', include('dtheme.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

3、然后,就是寫views了,我們假如dtheme模塊的views里面寫:

?
1
2
def data(request):
 return render(request, "data.html")

4、請注意,之所以我們上面可以直接用data.html,是因為我們在dtheme模塊下面創(chuàng)建了一個templates文件夾,然后把data.html放在里面了,它會掃描這個文件夾找模板。那么這個模板寫成什么樣呢?我們就隨意寫了一個東西。這里面需要注意的是,我們需要繼承base_site.html,不然那些header和footer,還有左邊的菜單什么的都沒有了,相當于誰也不繼承。內(nèi)容就寫在content里面即可。

?
1
2
3
4
5
{% extends "admin/base_site.html" %}
 
{% block content %}
hello, new page.
{% endblock %}

5、OVER。

6、回來,還沒完。這個時候如果我們從后臺注銷,然后直接在瀏覽器中輸入http://127.0.0.1:8000/admin/theme/data的話,發(fā)現(xiàn)還是可以直接訪問到這個頁面,輸入管理后臺的其他頁面它就會要求你驗證。所以說我們自定義的這個頁面還是十分危險的,其他人知道網(wǎng)址后就可以直接訪問它了,我們的想法其實也很簡單啊,我們也不想搞特殊,在安全這方面,只要求和其他后臺的頁面一樣就行了:即用戶在訪問這些后臺頁面的時候要做一個用戶驗證,如果用戶已經(jīng)登錄了,就可以訪問,沒登錄沒通過驗證的話,就不能訪問,直接跳轉(zhuǎn)到登錄頁面。這個需要我們再view里面做設(shè)置。

?
1
2
3
4
5
6
from django.contrib.admin.views.decorators import staff_member_required
 
def data(request):
 return render(request, "data.html")
 
data = staff_member_required(data)

看到上面的變化了沒有?就是我們引入了一個staff_member_required模塊,這個模塊就是用來驗證是否是內(nèi)部人員(也就是是否登錄)用的。當然我們要把我們的view函數(shù)放在它里面。這樣就OK了。

7、這里面還有一個如何把自定義頁面加入到auth里面的坑,待研究完再回來補充。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對服務(wù)器之家的支持。

原文鏈接:https://blog.csdn.net/weisubao/article/details/77719418

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产一区二区三区欧美精品 | 色啊色 | chinesespank调教 | 久久久精品免费视频 | 亚洲无人区乱码中文字幕 | 国产白白视频在线观看2 | 胸大的姑娘中文字幕视频 | 免费高清www动漫视频播放器 | 精品第一国产综合精品蜜芽 | 亚洲欧美综合区自拍另类 | 精品福利视频一区二区三区 | 亚洲 日本 中文字幕 制服 | 天天快乐在线观看 | 欧美久久天天综合香蕉伊 | 日韩免费在线视频观看 | 四虎永久在线精品免费影视 | 国产精品一区二区不卡的视频 | 久久最新地址获取 | 成人免费播放器 | 无人影院免费观看 | 扒开斗罗美女了的胸罩和内裤漫画 | 亚洲AV精品一区二区三区不卡 | 亚洲精品成人a | 久久久无码精品无码国产人妻丝瓜 | 99精品免费视频 | 色综合91久久精品中文字幕 | 男女姓交大视频免费观看 | 日韩美女强理论片 | 99国产牛牛视频在线网站 | 99精品久久久久久 | 王淑兰李思雨李铁柱乡村小说免费 | 动漫美女隐私尿口图片 | 成人福利免费视频 | 高人先生免费观看全集 | 免费国产一级 | 亚洲AV精品无码喷水直播间 | 久久亚洲精品AV成人无 | 女人狂吮男人命根gif视频 | 26uuu成人人网图片 | 国产精品国产三级国产专区不 | 搓光美女衣|