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

1 系統入口

咱們在項目中已經建立了system app,本套文檔要實現的權限管理功能所有隸屬於系統管理。先來實現系統模塊的訪問入口,效果以下圖:javascript

image

1.1 建立系統管理視圖

系統管理視圖是整個系統模塊入口,除了本次文檔中介紹的權限管理隸屬於系統管理外,系統配置、登錄日誌等這些經常使用功能均可以歸入系統管理中。
複製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')

複製代碼

1.2 URL配置

新建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

image

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

相關文章
相關標籤/搜索