咱们在项目中已经建立了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…