咱們在項目中已經建立了system app,本套文檔要實現的權限管理功能所有隸屬於系統管理。先來實現系統模塊的訪問入口,效果以下圖:javascript
系統管理視圖是整個系統模塊入口,除了本次文檔中介紹的權限管理隸屬於系統管理外,系統配置、登錄日誌等這些經常使用功能均可以歸入系統管理中。
複製sandboxMP/templates/index.html 到 /sandboxMP/templates/system/system_index.html,並修改system_index.html內容: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')
複製代碼
新建sandboxMP/apps/system/urls.py,內容以下:java
from django.urls import path
from .views import SystemView
app_name = 'system'
urlpatterns = [
path('', SystemView.as_view(), name='login'),
]
複製代碼
修改sandboxMP/sandboxMP/urls.py, 新增內容:git
from django.urls import include
urlpatterns = [
...原有內容省略...
path('system/', include('system.urls', namespace='system')),
]
複製代碼
這是就能夠訪問:http://127.0.0.1:8000/system (若是未登錄將會重定向到登錄頁面,登錄後跳轉到/system/)github
知識點介紹:
一、include: urlpatterns能夠包含其餘的URLconf,當咱們訪問一個URL時,當Django遇到include時,它會去掉URL中匹配的部分,並將剩餘的字符串發送給包含的URLconf繼續處理,例如咱們訪問:/system/users/時,匹配並去掉system後,將users/字符串發給system.urls處理。
二、namespace: 在使用include時,能夠經過namespace參數指定實例的命名空間,若是未指定,則實例命名空間默認爲URLconf的應用名稱。namespace可用於URL的反向查詢,項目中用到時咱們在進一步介紹。django
項目開始,咱們就一直在使用基本視圖類:View(django.views.generic.base.View), 全部的視圖類都是繼承自View類,它負責將視圖鏈接到URL、HTTP方法調度等功能。 基本視圖類還包括RedirectView用於HTTP重定向,TempateView擴展基類來渲染模板。
bash
修改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中相同的功能,代碼更加簡潔,更多關於基本視圖類的使用方法,咱們會在項目中逐步介紹,你也能夠參考官方文檔。app
最新最全文檔發佈在知識星球,能夠經過微信搜索公衆號「知識星球」,直接回復"52824366"得到訪問入口
本節文檔對應源碼版本: github.com/RobbieHan/s…
很是歡迎感興趣的朋友,到個人Github或掘金上作客,閒暇之餘給個贊或Star,贈人玫瑰手留餘香
文檔配套項目地址:github.com/RobbieHan/s…
輕量級辦公管理系統項目開源地址:github.com/RobbieHan/g…