From cc30e9939a6385f244b193751a112b435a7f3e75 Mon Sep 17 00:00:00 2001 From: yongzy <635602689@qq.com> Date: Mon, 15 Jul 2019 21:38:01 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E9=9D=9E=E8=8F=9C=E5=8D=95=E6=9D=83?= =?UTF-8?q?=E9=99=90=E7=9A=84=E5=BD=92=E5=B1=9E=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.idea/workspace.xml" | 168 ++++++++++-------- .../db.sqlite3" | Bin 69632 -> 71680 bytes .../rbac/__pycache__/models.cpython-36.pyc" | Bin 1950 -> 1981 bytes .../__pycache__/middleware.cpython-36.pyc" | Bin 1103 -> 1191 bytes .../rbac/middlewares/middleware.py" | 10 ++ .../migrations/0006_permission_parent.py" | 21 +++ .../0006_permission_parent.cpython-36.pyc" | Bin 0 -> 765 bytes .../rbac/models.py" | 1 + .../init_permission.cpython-36.pyc" | Bin 962 -> 1086 bytes .../rbac/service/init_permission.py" | 10 +- .../__pycache__/my_tags.cpython-36.pyc" | Bin 1007 -> 966 bytes .../rbac/templatetags/my_tags.py" | 4 +- 12 files changed, 137 insertions(+), 77 deletions(-) create mode 100644 "DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/migrations/0006_permission_parent.py" create mode 100644 "DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/migrations/__pycache__/0006_permission_parent.cpython-36.pyc" diff --git "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" index 5899d81..8960d53 100644 --- "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" +++ "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" @@ -2,10 +2,8 @@ - - - + - + @@ -211,6 +221,12 @@ + + + + + + @@ -340,22 +356,23 @@ + - - + - + - + @@ -363,7 +380,7 @@ - + @@ -445,23 +462,6 @@ - - - - - - - - - - - - - - - - - @@ -487,20 +487,6 @@ - - - - - - - - - - - - - - @@ -511,13 +497,10 @@ - + - - - - - + + @@ -528,10 +511,17 @@ - + + + + + + + + - - + + @@ -542,10 +532,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + diff --git "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/db.sqlite3" "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/db.sqlite3" index 2ceaa5e902a7fef4dd442c3dd97df7913fbba5f7..18475a44f538a5b94ba0f29f27925224697fd0d8 100644 GIT binary patch delta 1269 zcmZvcZ%i9y9LJwOcWn>Yk||B0n@j0r8+NpJ*A^^>MW}QuvBe6MwnnkEWn5`Xr68rr z%rHig&4lh**7(Y9F=p|FV!8yK%ls4Ln`Mhxe6bhmj0uA!!vG28#SHpfn~p8>lKVZ+ z-S_u=zQ23^+^IZsYJr*GyJrCa;GlQqdMkUx3>Ut7^O{nDZej;^6a>{gVlf0-NaoMg zLKV4LH4W>@@#@o1UHG;7hwq*?w+YX;39Uw}O*EU$?0(z80ZU(%5Bd}p0q2|8TCg) z>7HYrv^&$E@%Q!f{^$wOA5FG86P>Y8Tu6q@w06fXco8sQ65yj?5`BrZ*=(fh-RF9h z8iN78S52hN1F(yHwE6WOz3#AH3hSGW==90pcqB1F_7@L4lZ=eVrBq59OH}kGN=<8A zRyfm2UN2h6C+Ap_En0<{r}~u|j{(kDr9?QA9v=#Z26sjemYIW6cyK5*WD$hOFgdxY zA&0kW9`X3UtnZ8UyB`kLH_g=a5pVGfIlA@pZWi4E_$PcC_h2o$QxIxypciav7N~6< zvOUl9El-vp@`A0IZ*3N=Izeo+TI2;X+k{qLB-#hd8v1oAd>h~gxQN&BeY}kS!oTC& zbhSHCA+Y@pe38MBLk#91%U}Ria!|@aAqPedSPrNP|3Oi=0R9KB;4Qp?S1IaN3H2db zynvtpjdcG&R#}QF>dcgSB@l&kGL4gI97Grc?lT6~)a^p|fC|k4{2RW4=kROThBaso zU7;0@Bb8C90QN=z$@cakj%`*cKnH!wT}SXB$5IC)6#*3ws&onkI3#Bp{;fB#I#vOi z8aZG}2B+h6@l7!)HDOx5dU@sYH%qg*l?#`enG%^Jf4;xBc4;<$@8eIGzPNaIcF~9x zpsNvZMEGD|%ktIpE7!7RL5E}};7p;()WldkGHwcn!=}57-!9GN%Ncs80ER{ga+eU? zcbUFk6rn~u|@6}X*_MNe`Ku`3vi?;5*?h%)lBsUr~ z(V@hsM8}!~1F=N#xI6(}Q!YE%{`-y23eqhjeY`vi8K0PbJ0Qj;>D=+5gf}+qX>YIW PdeNp69{(+6v%3EPQ-z7t delta 550 zcmZqJz|ydQWrDQe8U_Xi7a)d#oQXQdjB7R~>|iLIixVUK416lR zEF&TeEq$E53X%;ii<68}3X(EC%~CwP45K0pY>f;IEp-jdb&V_)3{h?7WqQQG%oxwW z7|#^UY{zT|^wYx0h8z~&Ot$-ejE99; zih=nEb2qa;v(#om87}6@Qoo;zGyh@WV7|h@{GIs|^IPV}%=egYGQVKHve}TsiD`4x zzdA+-CKhG}Mh+0c4kFlCm^m3)K`a&!!3-jpfEKavGT&q1U|Pt)w2*l(b02d8vpuss w(?_Nwz)0<6+P;v9(U4L2+4kK}yB0iMx9C~NcAy?5ZB>TJ6aGmrV`1b00KD&@c>n+a diff --git "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/__pycache__/models.cpython-36.pyc" "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/__pycache__/models.cpython-36.pyc" index 052cc42fae91c50d04ad86a4381fb10a0039a989..033a499821ab7151effcb1d0566a5b4f19db5579 100644 GIT binary patch delta 151 zcmbQozn7oan3tD}tz0MeIST{B&wlQURmvlekPFfdHkV^*E4!K%QhFxeAG@=VTRwPU}&tlD&!j;0^!Vtxk!V}D($ve4% zW%gt}X4T2ItO|_sljDFS_vCt3yUC7BQj_nqa&mJqFfeeiurTs5@=gBA`j%0B@?$nr SMuo|e?8c1BlYQCq8F>M1svAB4 diff --git "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/middlewares/__pycache__/middleware.cpython-36.pyc" "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/middlewares/__pycache__/middleware.cpython-36.pyc" index 754fb57f474c9c43d80d87c2a297f546cd995055..8313077af18cfe4e8e25c2b88b2412839157689a 100644 GIT binary patch delta 396 zcmZWl%}T>S7~G#^vm2W#QV)eT_mm2XFCeH;@KPyQ5K0iYVgtsy-9jlFRPqS>3?kkX zdHg_~xNI`f^|W8om<@Ir71?zss${Oh;Ylca;iE>;OEaHM3@^W!GUJt8J-ZwtU6Z`5 zkA(fektoPS7IZq1_8V`vgF;Nt^;JAcFK>$Vi@8$cRL9rjbRL5vBBxl`d$Lnk0UScr y0iKa+**Bti2LvJv+b(VTgkz2!!YQ*y^mr>Q-L3!7wvY4#Z`vQ)*;rZaI^i!PEn1QQ delta 326 zcmZ3^d7gvIn3tC;)lnx_pJgK#4`V$$0|Nsq5IX~L@jM_=!@F#FxSl%uvV|4pPOM#g@X@%vj4(!&2;2!d}9W!qg1p2Qz^6a$@N9 z0_*jH>tzP&Wi_f$t6>Eym8)d~S(Cz&#Z|+W!Yawo%m}uy1gxnfoS}p}g$-o5Ci~>~ zjGB`bnRI!0ZgCbQmSn_d=B4FN&SnZ@WS@M9$$(`gLy_bp<|27Hpl2AE*qC@2c^El> rBnu-CjLpQwC^mU6v$v=;P)U&_Dj_xbFLNLx|73p_EddOvP8K-;cjiK8 diff --git "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/middlewares/middleware.py" "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/middlewares/middleware.py" index c4a67d5..6fa4436 100644 --- "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/middlewares/middleware.py" +++ "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/middlewares/middleware.py" @@ -8,6 +8,7 @@ class AuthMiddleWare(MiddlewareMixin): def process_request(self, request): # 获取当前访问的URL path = request.path_info + request.current_menu_id = None # 白名单 for url in settings.WHITE_LIST: if re.match(url, path): @@ -25,5 +26,14 @@ class AuthMiddleWare(MiddlewareMixin): # 权限的校验 for permission in permissions: if re.match(r"{}$".format(permission['url']), path): + # 记录二级菜单的id(父权限) + id = permission['id'] + pid = permission['pid'] + if pid: + # 当前访问的是一个子权限 + request.current_menu_id = pid + else: + # 当前访问的是一个父权限 + request.current_menu_id = id return return HttpResponse('没有访问权限,请联系管理员') diff --git "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/migrations/0006_permission_parent.py" "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/migrations/0006_permission_parent.py" new file mode 100644 index 0000000..a315d87 --- /dev/null +++ "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/migrations/0006_permission_parent.py" @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2019-07-15 12:53 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('rbac', '0005_menu_weight'), + ] + + operations = [ + migrations.AddField( + model_name='permission', + name='parent', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='rbac.Permission'), + ), + ] diff --git "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/migrations/__pycache__/0006_permission_parent.cpython-36.pyc" "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/migrations/__pycache__/0006_permission_parent.cpython-36.pyc" new file mode 100644 index 0000000000000000000000000000000000000000..7c40277bad11ff212288bb393ef856e8abcfc9b1 GIT binary patch literal 765 zcmYjP&5qMB5O(7HZ!3C3NbmrWpsIx6utKY?wk!u=g|wWaAS>;--DDl7IEkuqg##S+ z0eFOc1tea?R}K{qz@2fTZr7GaV|!-&ec$-`a2Ubn>8BH$kU!+!aL_-+RUe}P0+t}9 zl~|VXZDE%*p{0{J-JS|J@!k+{!2L$R<+Sj>(!>XPNn-CW=9AdcqgLjN3OEya!&N5g z*w#^*uT<9Lm8`W_;-#oB7AAf_LUc}XbtpJVEFg&u(aK6FcM2CMINU3IaPifk2n(-> ziX-sAzi}YAp%^!S5K$cI@csTN?WlRS(4)y@@`9CIwrs=m)m5XTHCJU`*9b>@>r8Rk zeEjmj1dl)5-NcS|=OUBW+L5ggI;y)fQ#5x9#T<0 zns}%K*2OTUBgQbN6&(EmW1rhhm^`xszUC6RT;#k~6ccqY1voeLl!?D0z1X)zJvLB``Nz=Aj?=5E1no$5?TD_du8JGQr6?*wp%x*fr1qJaLKhjj=oggfa+ZFF z3x7iBpSUxVicl^&_uS_R_bd0wz4KBjkMU{aXYM^0JOH>hFC;jZm8tMVe#Sd=1~HKk z(>BCxl4^1TjYaHe)?wNa)CYr}#k>!qkkT1qmg7FC>dI^So>L!&JGRfYn6t<%{%;Y* zl(tcnQl_VLHC%&HRsV4#u;GIh{vQ;ZDaj;9)fb2yZRL$;_8Uw?$Bl9wUIVjZ#l0Gc zt&EFp!{8Buox9rr>*Zlf^<)^zK|gFZ$4LVh_w~)Sq!jhNwZ!mEwfa$0ihwTZSap{~ ziX|P|*okD+Z7FIls+fU*DL3Jya+uvYAj-`OS@o&TW!UTv+Oi+ylM8a-aw4I Mtt&K9NDLI|FVXsP`2YX_ delta 438 zcmY+AO-sW-5Qb+z^3f!%B2_GS@)jvl5O2YY_29*eiXaq`ZcR7Fgl z4<7v$9{dMhgFnVeii!+7^US{UGVH#aA4ctpkRyAYyhI&EPTBV{_*{CwFGWvwI zq&^Y$l4oq?@?g~YVbo8Y76crnf0lCDsB;Aw&mhoJJuo~#(~3ZUVc&$WTNwZV diff --git "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/service/init_permission.py" "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/service/init_permission.py" index 0508e17..0e50822 100644 --- "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/service/init_permission.py" +++ "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/service/init_permission.py" @@ -9,6 +9,8 @@ def init_permission(request, obj): 'permissions__menu__icon', 'permissions__menu__weight', 'permissions__menu_id', + 'permissions__id', + 'permissions__parent_id', ).distinct() # print(permissions) menu_dict = {} @@ -27,7 +29,8 @@ def init_permission(request, obj): # # }) for i in permissions: - permissions_list.append({'url': i['permissions__url']}) + permissions_list.append( + {'url': i['permissions__url'], 'id': i['permissions__id'], 'pid': i['permissions__parent_id']}) if i['permissions__menu_id']: if i['permissions__menu_id'] not in menu_dict: menu_dict[i['permissions__menu_id']] = { @@ -35,14 +38,15 @@ def init_permission(request, obj): 'icon': i['permissions__menu__icon'], 'weight': i['permissions__menu__weight'], 'children': [ - {'title': i['permissions__title'], 'url': i['permissions__url']} + {'title': i['permissions__title'], 'url': i['permissions__url'], 'id': i['permissions__id']} ] } else: menu_dict[i['permissions__menu_id']]['children'].append( {'title': i['permissions__title'], 'url': i['permissions__url']} ) - # print(menu_dict) + print(menu_dict) + print(permissions_list) request.session[settings.PERMISSION_SESSION_KEY] = permissions_list request.session[settings.MENU_SESSION_KEY] = menu_dict request.session['is_login'] = True diff --git "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/templatetags/__pycache__/my_tags.cpython-36.pyc" "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/templatetags/__pycache__/my_tags.cpython-36.pyc" index 33f203b378caff776a2e8a8ef4d337006cc777b6..7e26c6c43ac7cc3e54cbd02e362043d4a37c919e 100644 GIT binary patch delta 337 zcmX9(yGjF55S_V?-OZY4s*spQM2mok-~*AA7FISE0Wkz|R@haedvhZx?wVp1V__i| zf5Flpu=gYOC#4ha&?CB&b=! zb9@0Ua>!8289c)!5)yk1h?98b8Jjc>JA{5c<1;Y41qKc8Lb}z1$8jrmKCIlhqx6tv)qDWZyzrHI10IHew>$34)2!SYm&2(&QoV?2RQ)lTtO z6f7qDz#3Sw?`(Zv3HL$ajc%2WsPOL3ugB5obm?NOR5a9sn`k&5#8k*T6%TdCD|{8D sPNA*fdn?P%3v7{l*uW6$xQKy6$#qsm)wXAR%>}B+KJi^_+b_QJ5A7yUYybcN delta 395 zcmX9(Jxc>Y5S`h*+e8Hx`)UK#==7H ze^~h&?EC{;_!q3~-6O?&^JeC~f%$TN9rw6UaKCSlx=7#Lj|T?;m;p6dd>T>^K!B12 zG{%>-vm%ss3=xrR1J5u-j+{JYIOWzWjp(|fXdAkv$l8Fis-TFnS`aonu)f$p;KX3I z?a1b~vN>zPx@oFYO{a$uJCm6p%QJzi7|&KAMujmE0Z)5l=DBSs3_1{AbwK76Nl(Uz z!1G(}<0Ui-Nr-=Ycl180Yq}I;&H4lBuRIOc*@-t@_Qw7~HuA|MIXKtZd0&ot{&YAK zmibt-#Y{+#Yqsi-m)=4X;c0u)mxGaJ#$%MW=fa=LhNB(fg~lVrj!7mzq`ALq1dt*! i!mx}kmavE!gRB&C^A!9@U diff --git "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/templatetags/my_tags.py" "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/templatetags/my_tags.py" index 88612c9..2bc1d3a 100644 --- "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/templatetags/my_tags.py" +++ "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/templatetags/my_tags.py" @@ -10,7 +10,7 @@ register = template.Library() @register.inclusion_tag('rbac/menu.html') def menu(request): menu_dict = request.session.get(settings.MENU_SESSION_KEY) - url = request.path_info + # url = request.path_info od = OrderedDict() keys_list = sorted(menu_dict, key=lambda x: menu_dict[x]['weight'], reverse=True) @@ -19,7 +19,7 @@ def menu(request): for i in menu_dict.values(): i['class'] = 'hide' for m in i['children']: - if re.match(r'{}$'.format(m['url']), url): + if request.current_menu_id == m['id']: m['class'] = 'active' i['class'] = '' -- Gitee From 3f6ff5d78af9560848212ea95a1eb16026eef28c Mon Sep 17 00:00:00 2001 From: yongzy <635602689@qq.com> Date: Mon, 15 Jul 2019 22:05:55 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=B7=AF=E5=BE=84=E5=AF=BC=E8=88=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.idea/workspace.xml" | 114 ++++++++++-------- .../db.sqlite3" | Bin 71680 -> 72704 bytes .../__pycache__/middleware.cpython-36.pyc" | Bin 1191 -> 1426 bytes .../rbac/middlewares/middleware.py" | 12 +- .../init_permission.cpython-36.pyc" | Bin 1086 -> 1101 bytes .../rbac/service/init_permission.py" | 13 +- .../rbac/templates/rbac/breadcrumb.html" | 14 +++ .../__pycache__/my_tags.cpython-36.pyc" | Bin 966 -> 1137 bytes .../rbac/templatetags/my_tags.py" | 6 + .../web/templates/layout.html" | 9 +- 10 files changed, 106 insertions(+), 62 deletions(-) create mode 100644 "DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/templates/rbac/breadcrumb.html" diff --git "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" index 8960d53..92aedae 100644 --- "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" +++ "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" @@ -3,7 +3,9 @@ - + + + - - - - - - - - - - - - - - + + @@ -91,17 +81,17 @@ - - + + - + - - + + @@ -109,11 +99,20 @@ + + + + + + + + + - - + + @@ -153,9 +152,9 @@ @@ -181,18 +180,19 @@ - - + + + + + + + - - + + - - + + - + - - + + + + + - - + + - + - - - - - + + diff --git "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/db.sqlite3" "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/db.sqlite3" index 18475a44f538a5b94ba0f29f27925224697fd0d8..a9916497bfea781e82a6c4e2544667dfcfa80854 100644 GIT binary patch delta 1658 zcmbVMO>g5=6sNpZg_iR9xuvj6Mut1<}*bEDHs2lzPe*i=&LYl=axK280+O%C@$+~_|e(#=p&pG$- zhlRtR7CyhbJe-@G<4#}di?{RC@W+qxN3XE#RyMyu=dSGuR`gm7+s8KS*=0-W`d0Mp>DsClSWUHNNp{(Xe?3yf zxmH*4Tg4!Hda}OscsH;F3+JN4Kkf{4weD0y>|?j%V0%BT7Wv@paNRSxUI+Fq?O}r< z97!S)+;Wga-7Sa7zF-Sk+@*bN3nLJw#>4l%Rb@nEWa|elRSBz%;xx6|!J|^4_8}*F zq{JE;SBt;RP|HOj3@n2i0q6k$x~bKDvWs)L(?cSo_e6*ir?Y|rYn5*c$-a&IV#pV& zMNC5nVzfZrx#19X`23%xdpCm@iQ;cE)a{+(HTTOn6e@5(bX%1N@eE6J5hlS^>!iYkG!ApR;ttv!&=SVA)@ zxWH24okSI)EFf{0FFcMuI5~1jKHSw~O&Tbg=rm-=R)^S?9&dG*)6z%cF=(NrTTq6lGleI~7$I)?6H^mAhJ{9oG#SMsOdDLk-;3X0q263RH;Llz z3bhtdKc@#1n^p>%mW-$Ij6Clgu%`XOIf;0$$DuPUo7jIEgHYOr3dQ}V+H(w70nANa5`X2n9eO7+1V!pn~6GOs@srHy`qdX!HYyMul}czs?lyq3qUXehaZ1EJ8Up F`yZ3+FKqw- delta 379 zcmZqJ!P2mSWr8&C1_lNOHy{Rsi5ljN8#X4GpB6N>k7tDLeTvyvBtJmqS#zO-}r13=$P#b+h#GD4xDhoKcM* z!_c=G{~%FNng15OnpjK?!2~1$t62NWefKyG+s(oyqQG($g!8^st8k zLC8TI@U$Mh_;K{$pP64^ZeBbJ*35!Q@X%G&Rqxe%-Cvyd4flSt=?>rA+5c&McRiT9 zgb)+YLp85NjEAV5%IEa(fs8=b8yBVv!p{z_&jGveCNG^esJ$PPK}?^aAJ zvIWZ_W16MUm7`o?=8(e8$t=t+W?S3uKr(Gtwza8R+Rg#{4w|A-TRRmOW1~lex1c#dWtT?B?d4jGmqzgo zZPkmGmRugS6yFCvxJe(nyso zxt}CKETmN}b4!*6%(+Ex1l?uyM|@vkGgB!)o!-cyjGF a66-~m!mZ+u@eEdqZMM;=G_H)^vh}}pL!iC@ delta 464 zcmZWlO-sW-5Z&2ql1-Y3NEHgP_tp;(Zz3Y-p;(Yg4?Rec!lu~J&rJ%YY$%e8XY(V( zoBjkZ{)pTJ58nI>P68g(!@M_dXWq>2K9n9U`_Of5b+_C7&|ho^Ru&;d$2h|X-w+f8 zB&GuS1{T$b2HH94mSZhqfvz+~6DrGsw8^a8$$O2!6p%p76bl;>k1RnG)NN9D?SI}@ z;cfkRuZ4zYebG=lww}gDzDBU1qzs`~NCL&eB`TvrViVa!=8DT_#q%qU4Q1wBj9qp} zIqF5y#CO)LjD`NNpPAC1&HXUS*t8ejN(XB) z{}ow6$n2>vM}sgNOvcj9PuCEhi1gBTP43iD5Nd!y9dLjnGH`x!YQq-gz=2V&8R_ diff --git "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/middlewares/middleware.py" "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/middlewares/middleware.py" index 6fa4436..a1055c6 100644 --- "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/middlewares/middleware.py" +++ "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/middlewares/middleware.py" @@ -9,6 +9,9 @@ class AuthMiddleWare(MiddlewareMixin): # 获取当前访问的URL path = request.path_info request.current_menu_id = None + request.breadcrumb_list = [ + {'title': '首页', 'ur': '/index/'} + ] # 白名单 for url in settings.WHITE_LIST: if re.match(url, path): @@ -22,9 +25,9 @@ class AuthMiddleWare(MiddlewareMixin): if re.match(url, path): return # 获取权限信息 - permissions = request.session.get('permissions') + permissions_dict = request.session.get('permissions') # 权限的校验 - for permission in permissions: + for permission in permissions_dict.values(): if re.match(r"{}$".format(permission['url']), path): # 记录二级菜单的id(父权限) id = permission['id'] @@ -32,8 +35,13 @@ class AuthMiddleWare(MiddlewareMixin): if pid: # 当前访问的是一个子权限 request.current_menu_id = pid + p_permission = permissions_dict[str(pid)] + request.breadcrumb_list.append({'url': p_permission['url'], 'title': p_permission['title']}) + request.breadcrumb_list.append({'url': permission['url'], 'title': permission['title']}) + else: # 当前访问的是一个父权限 request.current_menu_id = id + request.breadcrumb_list.append({'url': permission['url'], 'title': permission['title']}) return return HttpResponse('没有访问权限,请联系管理员') diff --git "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/service/__pycache__/init_permission.cpython-36.pyc" "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/service/__pycache__/init_permission.cpython-36.pyc" index ac6abbe54af2905d28f1c84e4fb567240617eedf..26acd17e0a3e8c643fc8a14a0e45bc8b24e115ac 100644 GIT binary patch delta 142 zcmdnTah8M2n3tDJu2md}P iVR9tXQ|6S+ + + {#
  • 首页
  • #} + {#
  • 客户管理
  • #} + {% for breadcrumb in breadcrumb_list %} + {% if forloop.last %} +
  • {{ breadcrumb.title }}
  • + {% else %} +
  • {{ breadcrumb.title }}
  • + {% endif %} + {% endfor %} + + + \ No newline at end of file diff --git "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/templatetags/__pycache__/my_tags.cpython-36.pyc" "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/templatetags/__pycache__/my_tags.cpython-36.pyc" index 7e26c6c43ac7cc3e54cbd02e362043d4a37c919e..8703488e6e739e8710d46411c0546a70f0797a86 100644 GIT binary patch delta 249 zcmX@c{*go3n3tC;v0W#29Ww*NV+JGunZ^esY8bK@ zY8g`)YZx;bfrc>o-Qq{+jnBy}F41Hxk^w5zWGa#XQebuw8;AuaIDxENTyQO-Npe7e sViq95z{JK_BnzZ9c_v#j$1=)Jp2VyszylQEVd7!rVB}%qU=|Vq094v9-2eap delta 80 zcmey!ag1Hrn3tDJqFyKVKNADPV+JI^3}ib1ak1A#Wly#g=3oX*j*TrxnV2-WC*Ng` Xoovsd#K#4c=V9VuyV? diff --git "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/templatetags/my_tags.py" "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/templatetags/my_tags.py" index 2bc1d3a..2e358e0 100644 --- "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/templatetags/my_tags.py" +++ "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/rbac/templatetags/my_tags.py" @@ -25,3 +25,9 @@ def menu(request): print(od.values()) return {'menu_list': od.values()} + + +@register.inclusion_tag('rbac/breadcrumb.html') +def breadcrumb(request): + breadcrumb_list = request.breadcrumb_list + return {'breadcrumb_list': breadcrumb_list} diff --git "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/web/templates/layout.html" "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/web/templates/layout.html" index 0429ce2..fd07c94 100644 --- "a/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/web/templates/layout.html" +++ "b/DjangoLearning/luffy_permission-\347\251\272\347\231\275\347\211\210/web/templates/layout.html" @@ -9,7 +9,7 @@ - +