前言
本文主要給大家介紹了利用django-suit模板在管理后臺添加自定義的菜單和自定義的頁面、設置訪問權限的相關內容,分享出來供大家參考學習,下面話不多說了,來隨著小編一起看看詳細的介紹吧
方法如下:
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 '權限管理' , '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 '第三數據' , 'icon' : 'icon-lock' }, '-' , { 'label' : u '統計數據' , 'icon' : 'icon-tags' , 'models' : ( { 'url' : '/admin/theme/data' , 'label' : u '第一數據' }, { 'url' : '/admin/theme/show' , 'label' : u '第二數據' } )} ) } |
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,還有左邊的菜單什么的都沒有了,相當于誰也不繼承。內容就寫在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ā)現還是可以直接訪問到這個頁面,輸入管理后臺的其他頁面它就會要求你驗證。所以說我們自定義的這個頁面還是十分危險的,其他人知道網址后就可以直接訪問它了,我們的想法其實也很簡單啊,我們也不想搞特殊,在安全這方面,只要求和其他后臺的頁面一樣就行了:即用戶在訪問這些后臺頁面的時候要做一個用戶驗證,如果用戶已經登錄了,就可以訪問,沒登錄沒通過驗證的話,就不能訪問,直接跳轉到登錄頁面。這個需要我們再view里面做設置。
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模塊,這個模塊就是用來驗證是否是內部人員(也就是是否登錄)用的。當然我們要把我們的view函數放在它里面。這樣就OK了。
7、這里面還有一個如何把自定義頁面加入到auth里面的坑,待研究完再回來補充。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。
原文鏈接:https://blog.csdn.net/weisubao/article/details/77719418