利用django-suit模板在管理後臺新增自定義的選單和自定義的頁面、設定訪問許可權
1、先在settings.py
裡面的SUIT_CONFIG
中新增配置,我們平時新增的配置都是app
型別的,我們需要自定義頁面的話,就不能用app
了,需要用url
,這裡面我們使用如下:
# 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狀態
{'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
裡面去匹配,造成混亂或報錯。
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
裡面寫:
def data(request):
return render(request, "data.html")
4、請注意,之所以我們上面可以直接用data.html
,是因為我們在dtheme
模組下面建立了一個templates
資料夾,然後把data.html
放在裡面了,它會掃描這個資料夾找模板。那麼這個模板寫成什麼樣呢?我們就隨意寫了一個東西。這裡面需要注意的是,我們需要繼承base_site.html
,不然那些header
和footer
,還有左邊的選單什麼的都沒有了,相當於誰也不繼承。內容就寫在content
裡面即可。
{% extends "admin/base_site.html" %}
{% block content %}
hello, new page.
{% endblock %}
5、OVER。
6、回來,還沒完。這個時候如果我們從後臺登出,然後直接在瀏覽器中輸入http://127.0.0.1:8000/admin/theme/data
的話,發現還是可以直接訪問到這個頁面,輸入管理後臺的其他頁面它就會要求你驗證。所以說我們自定義的這個頁面還是十分危險的,其他人知道網址後就可以直接訪問它了,我們的想法其實也很簡單啊,我們也不想搞特殊,在安全這方面,只要求和其他後臺的頁面一樣就行了:即使用者在訪問這些後臺頁面的時候要做一個使用者驗證,如果使用者已經登入了,就可以訪問,沒登入沒通過驗證的話,就不能訪問,直接跳轉到登入頁面。這個需要我們再view
裡面做設定。
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
裡面的坑,待研究完再回來補充。
相關文章
- android自定義訪問許可權permissionAndroid訪問許可權
- devise在引擎中安裝後,設定訪問自定義頁面dev
- 自定義Android應用的訪問許可權Android訪問許可權
- 自定義許可權物件物件
- android framework中新增自定義許可權AndroidFramework
- hadoop自定義許可權Hadoop
- SAP自定義許可權物件物件
- DRF內建許可權元件之自定義許可權管理類元件
- [提問交流]後臺新增自定義選單左側不顯示子選單的進
- Appfuse:新增自定義頁面元件APP元件
- android動態許可權到自定義許可權框架Android框架
- 直播平臺搭建,實現自定義設定登入頁面
- [WCF許可權控制]利用WCF自定義授權模式提供當前Principal模式
- 選單許可權和按鈕許可權設定
- Django(63)drf許可權原始碼分析與自定義許可權Django原始碼
- vue實現後臺管理系統頁面功能和頁面路由許可權的控制Vue路由
- 自定義登入和登出頁面
- Vue2-利用自定義指令實現按鈕許可權控制Vue
- 08.Django自定義模板,自定義標籤和自定義過濾器Django過濾器
- JavaWeb 自定義404頁面JavaWeb
- 07.Django中的自定義認證方式和許可權的設計與使用Django
- SharePoint REST API - 使用REST介面對列表設定自定義許可權RESTAPI
- SpringSecurity:hasAuthority與自定義許可權校驗SpringGse
- MongoDB4.0建立自定義許可權(只有查詢,插入和更新的許可權)的角色步驟MongoDB
- 前端單頁面應用的許可權管理前端
- Ecshop:後臺新增新功能欄目以及管理許可權設定
- 對定義者許可權和呼叫者許可權的理解
- 許可權管理系統的設計案例 -- 需求定義(2)
- 許可權管理系統的設計案例 -- 需求定義(3)
- 許可權管理系統的設計案例 -- 需求定義(4)
- Vue | 自定義指令和動態路由實現許可權控制Vue路由
- PbootCMS自定義前臺404錯誤頁面boot
- (五)自定義按鈕模板和設定觸發器觸發器
- ecshop後臺新增左側選單與分配許可權
- 【C#MVC4】選單管理和訪問許可權分配(四)C#MVC訪問許可權
- 【Oracle】v$表和v_$同義詞的訪問許可權Oracle訪問許可權
- android - 解決“應用自定義許可權重名”Android
- Vue2.0 + ElementUI 手寫許可權管理系統後臺模板(三)——頁面搭建VueUI