• python笔记22(CRM1)


    一、打开下载的项目

    1、选择File>>Setting,Project Interpreter选择python3.6.

    2、打开Edit Configurations,按照以下进行修改。

    3、项目运行时,如果出现找不到模块,就使用pip install 模块名进行下载,xlrd主要用户批量导入功能的需求。

    二、权限系统

    CRM介绍:包括:1、权限系统

                          2、业务逻辑

    1)什么叫权限?
     对于一个系统来说,不同用户能做的事儿不一样!
     用户的权限不一样。

    2)我们为什么要讲权限系统?
      1. 只要是一个系统中涉及到不同的用户,都会有权限系统的需求。
      2. 咱们目标是写一套可以适用任何系统的权限系统。
      3. 只需要写一次,跳槽用的着。
      
    3)针对Web开发来说,权限是什么?
      不同的权限   <--> 不同的URL
      一个URL对应一个权限
      
    4)权限系统设计?RBAC(基于角色的权限控制系统)
       1. 做项目
         1. 分析需求
         2. 表结构设计      程序 = 数据 + 业务逻辑
       2. 第一版表结构设计(详见excel第一个sheet)
     
    5)第一版(第一版的表结构设计有缺陷?管理权限的时候太复杂了):

    6)第二版(考虑到公司中存在兼任的现象,将用户和角色表设计成多对多)

     7)写代码

    1.为了实现项目结构的解耦,把权限系统单独写成一个app

    复习Django中创建app步骤:

      1.只能通过Terminal创建app,打开Terminal,输入python manage.py startapp 项目名字(项目名字命名为rbac,意思为基于角色的访问控制)

      2.在setting.py中注册app

      3.在rbac下的models.py文件中创建表结构,然后执行两条命令,把表结构同步到数据库   

    from django.db import models
    
    # Create your models here.
    
    # 用户表
    class UserInfo(models.Model):
        username = models.CharField(max_length=16, verbose_name="用户名")
        password = models.CharField(max_length=32, verbose_name="密码")
        roles = models.ManyToManyField(to="Role")
    
    # 角色表
    
    class Role(models.Model):
        title = models.CharField(max_length=32, verbose_name="角色名称")
        permissions = models.ManyToManyField(to="Permission")
    
    # 权限表
    class Permission(models.Model):
        url = models.CharField(max_length=255, verbose_name="url")
    models.py

        1. python manage.py makemigrations

        2. python manage.py migrate

      4.借助Django Admin 录入数据

        1.创建超级用户,用来登录admin管理后台:python manage.py createsuperuser;

          输入用户名;

          输入email,可以不输入;

          输入密码,至少8位,不能纯数字或纯字母;

        2.将我们自己写的表注册到Django admin中,在app/admin.py中按照固定的格式注册model,然后重启项目;

        3.管理后台,显示中文:设置settings中的LANGUAGE_CODE = 'zh-hans';显示时区:TIME_ZONE = 'Asia/Shanghai';

        4.表名字设置显示中文;

        5.表中展示可读的内容;

        6.录入数据;

        7.数据库添加字段,可以在先设置null = True,然后更新数据库后,把为空的字段添加后,去掉null = True,再次更新数据库。

        8.Django admin进阶,修改在页面上展示的字段以及直接修改字段;

       5.权限系统开发

        1.Django请求的生命周期(浏览器输入一个地址,点击回车,发生了什么)

          wsgi:wsgi是web服务网管接口,wsgiref/uwsgi模块实现了wsgi协议(本质写一个socket服务端)

          wsgiref模块:单进程单线程,适用于开发测试,对性能要求低

          uwsgi模块:处理并发

        2. 权限系统功能分析
          1. 用户必须登陆
          2. 用户登陆成功之后
            1. 拿到当前用户都有哪些权限
          3. 用户访问网站的页面(url)
            1. 判断当前访问的URL在不在该用户的权限里面
              - 如果存在就放行
              - 如果不存在就拒绝访问

        3. Django小知识点:
            1. 视图函数可以拆分成不同的py文件,如图;

            2. Django项目查找html文件的顺序
              1. 先找项目根目录下的templates
              2. 找app目录下的templates

         4.权限的校验
          1. 应该将权限的校验功能放在中间件中的process_request()方法
         
          2. 复习中间件
            1. 中间件在Django中的settings.py注册的
            2. 如何自定义中间件
              1. 按照规定的格式写一个中间件的类

              2. 把自己写的类注册到Django中

    三、菜单展示

     1. 一级菜单
      用户没有权限的菜单就不展示出来
      1. 什么能做菜单?
       URL是固定的可以作为菜单,不固定就不能
      2. 如何展示菜单?
       在权限表中增加 is_menu和icon两个字段
       
       1. 取到当前用户要显示哪些菜单
       
       2. 把该用户的菜单显示出来
       

    四、font Awesome图标

    http://fontawesome.dashgame.com/
     1. 字体图标相比图片的好处
      1. 体积小
      2. 放大不失真
      3. 随意修改颜色
      
     2. 使用

     五、权限系统的使用

    1、拷贝rbac这个app到项目中;

    2、删除rbac/migrations中的迁移记录;

    3、在新项目中注册rbac这个app;

    4、创建数据库迁移;

    python manage.py makemigrations

    python manage.py migrate

    5、注册admin,录入新系统中的数据 -->自动发现并录入url;

    python manage.py createsuperuser

    6、在登录流程中初始化权限信息;

    7、注册中间件;

    8、在settings.py中设置权限相关的配置项

     

  • 相关阅读:
    小球(总结sort和cmp函数、结构体排序)
    垃圾装袋(标记法)【标记思想】
    种树(标记思想)【贪心算法】
    PHP 配置文件
    最大前驱路径
    PHP代码片段
    PHP 中的Trait
    BootStrapTable 错误
    工作两周总结
    工作一周总结
  • 原文地址:https://www.cnblogs.com/xingye-mdd/p/9757901.html
Copyright © 2020-2023  润新知