zoukankan      html  css  js  c++  java
  • Django实战1-权限管理功能实现-04:系统入口

    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='system_index'),
    ]
    
    

    修改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中相同的功能,代码更加简洁!

    作者:james

    -------------------------------------------

    个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

  • 相关阅读:
    【Networking】(转)一个非常好的epoll+线程池服务器Demo
    【算法】Logistic regression (逻辑回归) 概述
    【Linux】/dev/null 2>&1 详解
    单点登录与联合登录
    web项目报outmemory错误解决方案
    hadoop学习之HDFS
    ELK日志分析系统
    基于cookie共享的SSO中的遇到的问题
    oracle的隐式游标
    mysql截取字符串与reverse函数
  • 原文地址:https://www.cnblogs.com/jameslove/p/10988297.html
Copyright © 2011-2022 走看看