1 系統入口
我們在專案中已經建立了system app,本套文件要實現的許可權管理功能全部隸屬於系統管理。先來實現系統模組的訪問入口,效果如下圖:
1.1 建立系統管理檢視
系統管理檢視是整個系統模組入口,除了本次文件中介紹的許可權管理隸屬於系統管理外,系統配置、登陸日誌等這些常用功能都可以納入系統管理中。
複製sandboxMP/templates/index.html 到 /sandboxMP/templates/system/system_index.html,並修改system_index.html內容:
{% extends "base-left.html" %}
{% load staticfiles %}
{% block content %}
<!-- Main content -->
<section class="content">
系統管理首頁:system_index,content是頁面定義的主要區域,
頭部和底部內容以及導航欄都是通過模板繼承的,之後的所有
功能前端頁面都是在content內進行編輯。
</section>
<!-- /.content -->
{% endblock %}
{% block javascripts %}
{% endblock %}
複製程式碼
在sandboxMP/apps/system/views.py中寫入系統管理檢視SystemView,內容如下:
from django.shortcuts import render
from django.views.generic.base import View
from .mixin import LoginRequiredMixin
class SystemView(LoginRequiredMixin, View):
def get(self, request):
return render(request, 'system/system_index.html')
複製程式碼
1.2 URL配置
新建sandboxMP/apps/system/urls.py,內容如下:
from django.urls import path
from .views import SystemView
app_name = 'system'
urlpatterns = [
path('', SystemView.as_view(), name='login'),
]
複製程式碼
修改sandboxMP/sandboxMP/urls.py, 新增內容:
from django.urls import include
urlpatterns = [
...原有內容省略...
path('system/', include('system.urls', namespace='system')),
]
複製程式碼
這是就可以訪問:http://127.0.0.1:8000/system (如果未登陸將會重定向到登陸頁面,登陸後跳轉到/system/)
知識點介紹:
1、include: urlpatterns可以包含其他的URLconf,當我們訪問一個URL時,當Django遇到include時,它會去掉URL中匹配的部分,並將剩餘的字串傳送給包含的URLconf繼續處理,例如我們訪問:/system/users/時,匹配並去掉system後,將users/字串發給system.urls處理。
2、namespace: 在使用include時,可以通過namespace引數指定例項的名稱空間,如果未指定,則例項名稱空間預設為URLconf的應用名稱。namespace可用於URL的反向查詢,專案中用到時我們在進一步介紹。
2、擴充套件知識點:基本檢視類
專案開始,我們就一直在使用基本檢視類:View(django.views.generic.base.View), 所有的檢視類都是繼承自View類,它負責將檢視連線到URL、HTTP方法排程等功能。
基本檢視類還包括RedirectView用於HTTP重定向,TempateView擴充套件基類來渲染模板。
修改sandboxMP/apps/system/views.py中SystemView繼承TempateView類來實現1.1中的功能:
from django.shortcuts import render
from django.views.generic.base import TemplateView
from .mixin import LoginRequiredMixin
class SystemView(LoginRequiredMixin, TemplateView):
template_name = 'system/system_index.html'
複製程式碼
修改後的SystemView繼承了TemplateView,無需再重寫get()方法,只需要重新定義template_name屬性,就實現了1.1中相同的功能,程式碼更加簡潔,更多關於基本檢視類的使用方法,我們會在專案中逐步介紹,你也可以參考官方文件。
最新最全文件釋出在知識星球,可以通過微信搜尋公眾號“知識星球”,直接回復"52824366"獲得訪問入口
本節文件對應原始碼版本: github.com/RobbieHan/s…
非常歡迎感興趣的朋友,到我的Github或掘金上做客,閒暇之餘給個贊或Star,贈人玫瑰手留餘香
文件配套專案地址:github.com/RobbieHan/s…
輕量級辦公管理系統專案開源地址:github.com/RobbieHan/g…