Django权限管理粒度到按钮级别

bug解决

1,根目录不判断权限,注意: 必须加$, 才不会匹配其他url

valid_url_menu=["/login/", "/reg/", "/admin/.*", "/$"]
ret = re.match("/", "/orders/")
print(ret)  # 会匹配成功

2, urls.py

urlpatters = [
    url(r"^/orders/add/$", views.order_add)
]

3, views.py

def order_add(request):
    return HttpResponse("添加订单")

4,销售没有add订单的方法,有查看订单的方法。url必须加上^$

......
permission_url = "^%s$" %permission_url
......

5,写session的语法应该写在rabc的组件里面。(rabc > rabc.py取session值。key的名字不能写死。)

rabc > service > initial.py

6, 视图引入

7,/orders/返回的页面

def orders(request):
    return render(request, "orders.html")

8, 点击添加订单,会跳转。如果是销售登陆,就不显示该按钮

9, get请求的时候就是拿到该用户所有的权限。如果有add权限就是显示add按钮

views.py

orders.html

注意: 这样的判断是有问题的。"/orders/add",添加按钮的url是固定的。如果是删除按钮呢。???

修改数据格式: permission_dict

写入到session的permission_list里多写点内容,把权限坐在组,权限的编号都写到session中。

结构改变了 --> permission_dict

# 方式2:

# 创建一个数据结构: 包含所有权限url,权限所在组,权限的编号

request.session["permission_dict"] = temp # [包含所有权限URL, 权限所在组,权限的编号]

分组: 表示找出订单里面所有按钮,再找出用户组里面的所有按钮

编号: 表示当前用户能看到(增,删,改, 查)的按钮。作用: 代替url有正则的权限,这样html好判断按钮是否显示。

 

posted @ 2018-10-09 11:51  猴里吧唧  阅读(434)  评论(0)    收藏  举报