Django實戰1-許可權管理功能實現-04:系統入口

sandbox_im發表於2018-11-13

1 系統入口

我們在專案中已經建立了system app,本套文件要實現的許可權管理功能全部隸屬於系統管理。先來實現系統模組的訪問入口,效果如下圖:

image

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/)

image

知識點介紹:
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…

相關文章