• day78


    15qitongxue

    xuede 特别渣  性格特别好  每次都回来分享失败的经验,碰到谁就和谁分享
    看了基础,去了何人说,回去整个项目再来
    
    面试,要带着项目去。简历上。(这么多年的开发)
    

    提高自我解决问题的能力

    没有bug,怎么走
    每天备份代码,做好调bug的准备
    

    今日内容:

    权限

    思维导图的方式整理出来

    bug1
    'web' is not a registered namespace
    
    return (reverse('web:customer'))	 	没有web 命名空间
    
    bug 2

    return render()

    一般模板渲染有问题, 一般数据出错了 (前端html)
    

    解决前端 : 把web: 都替换了

    rbac/distribute/permissions/?uid=2

    给用户分配不同的角色
    分配权限
    
    用户信息   角色不同了  他的权限也跟着变(角色已有的权限)(点击保存)
    

    分配权限

    给角色分配不同的权限
    点击BOSS(背景颜色变了)  所有权限都出来了 ,可以修改,保存
    

    三级菜单

    distribute_permissions

    去改成数据结构 chlidren (写的非常复杂,不会前端,for循环里有数据联动)

    distribute_permissions 2

    用户uid

    访问的时候没有保存 if uid ---》 有了保存

    <a href="?uid={{ user.id }}">{{ user.name }}</a></li>
    
    角色rid

    直接就改了私有变量

    _开头私有变量 (python中可以改,告诉别人是私有变量)

     <td><a href="?{% gen_role_url request role.id %}">{{ role.name }}</a></td>
    
    
        params = request.GET.copy()      deepcopy也是这么改 _deepcopy 有mutable方法
        params._mutable = True		下划线是私有变量  可以修改了=true
        params['rid'] = rid			
        return params.urlencode()		编码 拼接字符串 rid = role.id	rid=1
        答辩如何答辩					{‘name’:'chao','xx':111} name=chao&xx=11
        三个人站台上,全班提问			
        
        request.get  在url =  ? 的时候才会拿到值
        
        
        if 判断  把用户已有的角色 勾选上  
        用户分配角色  rid 
    

    <a href="?

    权限

    前端只负责给后端要数据,后端只给前端数据,怎么渲染不管				
    ajax做的 权限		
    res是数据	返回的是		
    
    
    parent = Fk('Permision')(和self ) 也行 关联自己 pid	
    
    

    weight 权重 排序的

    list(permissions) json反序列化下的 列表套字典 safe=False (字典没错,别的要falseyixia )

    jsonResponse(contype是json的,调用内部解析器,解析成内部的数据结构了)

    $.each(循环) (i(索引),permission({'x1':xx},{'x2':xxx}))

    组织数据 val [ermission]

    import copy
    request.GET.copy()   		copy方法
    copy.copy(request.GET)		__copy__
    			
    

    ES6 新增的模板语法

    var s=''多行语法

    ‘menu_${menu_pk}’   id = 'menu_1'   
    

    json在线格式化

    pid = none 父级
    s = 'tr 一级菜单  tr 二级菜单'
    input name = 'per_id' value={{pk}} 
    
    $(#body).append(s)
    

    数据 一次循环两级菜单

    这样显示格式是可以的,渲染的不同

    if (menu_title): tr tr

    else : tr (tr (td td td))

    根据per_${pk} #per_+parent_id append

    ![上一次pk 后一次根据per_append](E:Downloadqq_download eacher_huatu_downloads20pyDjangoday78上一次pk 后一次根据per_append.png)

    如果同处一个menu_id 的情况下,会生成,两个 信息管理 信息管理

    所以给个if 条件 判断一级菜单是否生成了

    if (#menu+menu_pk).length(或者不加length) : s = 'td'

    $ (#menu+menu_pk).parent().append(s) 一级标签加

    流程:

    刚开始没有uid 没有rid 只有两条数据 和 权限的数据

    if uid : vlaue_list = [(1,),(2,)] -->[1,2]

    ​ p_id_list = 权限有重复的 [1,2 ] 给了权限的ajax

    ​ --->permission2.html,role_id_list p_id_list

    默认勾选

    a 标签发了get请求 给了 渲染的成rid 渲染的p_id

    ​ if role.id in role_list : checked 模板的时候做

    ajax模板渲染之后 发送的ajax ---》per_tree (发送了jsR)

    拿到数据,生成标签,加到对应的页面位置

    ajax var p_id_list = {{per_id_list}}

    找到 value = pk 和 in p_id_list 一样的 给他加个checked

    $.each(p_i_l,func(i,j){
    	
    })
    

    有个ajax局部刷 ,点击user 或者 role 的话刷新

    {% if role.id in role_id_list %}	//[1,2,3,4]
       <input type="checkbox" name="roles" value="{{ role.id }}" checked/>
     		  {% else %}
       <input  type="checkbox" name="roles" value="{{ role.id }}"/>
        {% endif %}
    
     url: 'tree'
     var per_id_list={{ per_id_list }}   //[1,2,3,4]
    $.each(per_id_list,function(i,j){		
        console.log($("[value='"+j+"']")[0])	
        $("#body [value='"+j+"']").prop("checked",true)
    })
    
    input生成标签的时候vlaue 是{{pk}} 值   默认值
    
    3 简单版本

    简单版本

    保存提交

    用户的角色(自带权限)分配

    user uid = 1

    input name = 'postType' value = 'role' 就一个保存提交判断 是role 还是perssion

    if method = 'post' and request.POST .get('postType') =='role':

    l = request.getlist('roles')

    user.first().roles.set(l) 基于对象的多表操作 对象.

    roles 操作第三张表 set()先清空在赋值

    user_list = 再查一遍 然后再渲染回去

    role_list

    给角色分配权限

    自定义标签 + rid = 1 ? gen_role_

    uid=1 & rid = 1 boss

    rid request.GET.get('rid')

    之前的是 p_id_list = user.pk=uid

    现在应该是

    else rid : p_id_list = models.Role.obj.filter('perssins__pk'=id).cla正向

    if uid: p_id_list = models.user.obj.filter('perssins__pk'=id).cla

    input name = 'postType' value = 'permission'

    if re.method ="POST" and value = 'P':

    ​ l= request.POST.getlist('permission_id')

    ​ models.Role.objects.filter(pk=rid).first()取出对象.permissin.set(l)

    r除了权限之外都是增删改查,但是业务要给人说,吹 
    
    总流程

    两个bug

    第一个点击消失,二级菜单	if 路径
    第二个增删改查,点击消失    if pid
    
    
    

    权限加到项目

    1 settings 权限相关配置加到自己项目配置中

    2 权限中间件更改一下,配置一下 (权限都写在rbac中,)(出现什么bug,心里有数)

    ​ (有一些功能对不上的,按着流程一步步揪)

    3 白名单 ,登录

    4 登录---表里面有没有这些数据--提取数据,session中 注入permission_list , [{'pid','title','url','pk'}]

    5 登录认证,权限认证 request.session['permission_list'] request.path

    6 url-视图-模板

    7 模板渲染,左侧菜单栏权限(走到页面展示(流程图))

    8 不同的客户对应不同的操作

    9 权限管理 (角色的增删改查 权限的增删改查)

    nbcrm

    setting 给了 rbac.

    setting 配置一下 white .setting.confire = ['','','','']

    注意 : 路径分配

    rbac 有个user表

    nbapp 有个user表

    from nbapp.models import UserInfo

    class User(models.Model):

    ​ user = models.onttoonefield('nbapp.userinfo') 对应好了

    查询的时候:

    ​ login 登录成功之后注入权限:

    ​ if user_obj :

    ​ 用的是rbac 表里的对象 而不是nbapp

    ​ init_session(request,) rbac里的关联的用户表

  • 相关阅读:
    百度之星 预赛002 大数问题+斐波那契数列
    L2-005. 集合相似度
    L2-008. 最长对称子串 (有个知识点没看)
    L1-1. 这是一道简单题
    L1-3. 这道真是简单题
    java实现的加密解密
    应用实现国际化的做法
    SAX解析器
    JFrame绝对布局
    配置Tomcat启用Https安全协议的访问
  • 原文地址:https://www.cnblogs.com/Doner/p/11063951.html
Copyright © 2020-2023  润新知