日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

权限组件(6):权限分配的角色管理

發布時間:2025/3/8 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 权限组件(6):权限分配的角色管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

效果圖:

?

為了方便開發,先把中間件注釋掉,要不還要在角色-權限表中添加對應關系。又因為二級菜單和面包屑導航需要中間件的變量,所以要在layout.html里面把這兩個也注釋掉。

setting.py # 'rbac.middlewares.rbac.RbacMiddleware'

?

layout.html

{# {% multi_menu request %} #} {# {% breadcrumb request %} #}

?

一、路由分發

在主目錄的urls.py下給rbac做分發

from django.urls import path, re_path, include urlpatterns = [# rbacre_path(r'^rbac/', include(('rbac.urls', 'rbac'))) ]

?

給rbac下的urls.py里配置路由

from django.urls import re_pathfrom rbac.views import roleurlpatterns = [re_path(r'^role/list/$', role.role_list, name='role_list'),re_path(r'^role/add/$', role.role_add, name='role_add'),re_path(r'^role/edit/(?P<pk>\d+)/$', role.role_edit, name='role_edit'),re_path(r'^role/del/(?P<pk>\d+)/$', role.role_del, name='role_del'),]

?

二、增加form表單驗證

rbac/forms/base.py

from django import formsclass BaseBootStrapForm(forms.ModelForm):def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)for name, field in self.fields.items():field.widget.attrs['class'] = 'form-control'

?

rbac/forms/role.py

from django import formsfrom rbac import models from rbac.forms.base import BaseBootStrapFormclass RoleModelForm(BaseBootStrapForm):class Meta:model = models.Rolefields = ['title', ]

?

三、在視圖函數寫增刪改查的功能

rbac/views/role.py

?

""" 角色管理 """from django.shortcuts import HttpResponse, render, redirect, reversefrom rbac import models from rbac.forms.roles import RoleModelFormdef role_list(request):"""角色列表:param request::return:"""role_queryset = models.Role.objects.all()return render(request, 'rbac/role_list.html', {'role_list': role_queryset})def role_add(request):"""添加角色:param request::return:"""if request.method == 'GET':forms = RoleModelForm()return render(request, 'rbac/change.html', {'forms': forms})forms = RoleModelForm(data=request.POST)if forms.is_valid():forms.save()return redirect(reverse('rbac:role_list'))return render(request, 'rbac/change.html', {'forms': forms})def role_edit(request, pk):"""編輯角色:param request::param pk: 要修改的角色id:return:"""role_obj = models.Role.objects.filter(id=pk).first()if not role_obj:return HttpResponse('角色不存在')if request.method == 'GET':forms = RoleModelForm(instance=role_obj)return render(request, 'rbac/change.html', {'forms': forms})forms = RoleModelForm(data=request.POST, instance=role_obj)if forms.is_valid():forms.save()return redirect(reverse('rbac:role_list'))return render(request, 'rbac/change.html', {'forms': forms})def role_del(request, pk):"""刪除角色:param request::param pk::return:"""role_list_url = reverse('rbac:role_list')if request.method == 'GET':return render(request, 'rbac/delete.html', {'cancel': role_list_url})models.Role.objects.filter(id=pk).delete()return redirect(role_list_url)

?

?

?

增加和編輯可以用一個頁面。刪除頁面給其他表做增刪改查的時候也可以用,所以這里要給頁面傳一個固定參數cancel,以后其他表也要傳這個參數。

?

四、渲染到模板

rbac/templates/role_list.html

{% extends 'layout.html' %}{% block content %}<h1>角色列表</h1><div class="luffy-container"><div class="btn-group" style="margin:5px 0"><a class="btn btn-default" href="{% url 'rbac:role_add' %}"><i class="fa fa-plus-square" aria-hidden="true"></i>添加角色</a></div><table class="table table-hover table-striped"><thead><tr><th>id</th><th>名稱</th><th>選項</th></tr></thead><tbody>{% for role in role_list %}<tr><td>{{ role.id }}</td><td>{{ role.title }}</td><td><a style="color: #333333; font-size:18px" href="{% url 'rbac:role_edit' pk=role.id %}"><i class="fa fa-edit" aria-hidden="true"></i></a><a style="color: red; font-size:18px" href="{% url 'rbac:role_del' pk=role.id %}"><i class="fa fa-trash-o" aria-hidden="true"></i></a></td></tr>{% endfor %}</tbody></table></div> {% endblock content %}

?

rbac/templates/change.html

{% extends 'layout.html' %}{% block content %}<div class="luffy-container"><form action="" method="post" novalidate>{% csrf_token %}{% for field in form %}<div class="form-group"><label for="{{ field.auto_id }}">{{ field.label }}</label>{{ field }}<span style="color:red;">{{ field.errors.0 }}</span></div>{% endfor %}<span style="color:red;">{{ errors }}</span><input type="submit" value="提交" class="btn btn-primary"></form></div>{% endblock content %}

?

?

rbac/templates/delete.html

{% extends 'layout.html' %}{% block content %}<div class="luffy-container"><div class="alert alert-danger" role="alert"><form action="" method="post" novalidate>{% csrf_token %}<p style="font-size: 13px;"><i class="fa fa-warning" aria-hidden="true"></i>刪除后將不可恢復,請確認是否刪除</p><div style="margin-top: 20px"><a href="{{ cancel }}" class="btn btn-default btn-sm">取消</a><input type="submit" value="確認" class="btn btn-danger btn-sm"/></div></form></div></div> {% endblock content %}

?

?

轉載于:https://www.cnblogs.com/lshedward/p/10501937.html

總結

以上是生活随笔為你收集整理的权限组件(6):权限分配的角色管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。