新站突然网站停止收录,安徽住房和城乡建设厅注册网站,一个企业建设网站的目的,新浪云搭建wordpress效果图#xff1a; 为了方便开发#xff0c;先把中间件注释掉#xff0c;要不还要在角色-权限表中添加对应关系。又因为二级菜单和面包屑导航需要中间件的变量#xff0c;所以要在layout.html里面把这两个也注释掉。setting.py# rbac.middlewares.rbac.RbacMiddleware layo…效果图 为了方便开发先把中间件注释掉要不还要在角色-权限表中添加对应关系。又因为二级菜单和面包屑导航需要中间件的变量所以要在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, namerole_list),re_path(r^role/add/$, role.role_add, namerole_add),re_path(r^role/edit/(?Ppk\d)/$, role.role_edit, namerole_edit),re_path(r^role/del/(?Ppk\d)/$, role.role_del, namerole_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(datarequest.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(idpk).first()if not role_obj:return HttpResponse(角色不存在)if request.method GET:forms RoleModelForm(instancerole_obj)return render(request, rbac/change.html, {forms: forms})forms RoleModelForm(datarequest.POST, instancerole_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(idpk).delete()return redirect(role_list_url) 增加和编辑可以用一个页面。删除页面给其他表做增删改查的时候也可以用所以这里要给页面传一个固定参数cancel以后其他表也要传这个参数。 四、渲染到模板 rbac/templates/role_list.html {% extends layout.html %}{% block content %}h1角色列表/h1div classluffy-containerdiv classbtn-group stylemargin:5px 0a classbtn btn-default href{% url rbac:role_add %}i classfa fa-plus-square aria-hiddentrue/i添加角色/a/divtable classtable table-hover table-stripedtheadtrthid/thth名称/thth选项/th/tr/theadtbody{% for role in role_list %}trtd{{ role.id }}/tdtd{{ role.title }}/tdtda stylecolor: #333333; font-size:18px href{% url rbac:role_edit pkrole.id %}i classfa fa-edit aria-hiddentrue/i/aa stylecolor: red; font-size:18px href{% url rbac:role_del pkrole.id %}i classfa fa-trash-o aria-hiddentrue/i/a/td/tr{% endfor %}/tbody/table/div
{% endblock content %} rbac/templates/change.html {% extends layout.html %}{% block content %}div classluffy-containerform action methodpost novalidate{% csrf_token %}{% for field in form %}div classform-grouplabel for{{ field.auto_id }}{{ field.label }}/label{{ field }}span stylecolor:red;{{ field.errors.0 }}/span/div{% endfor %}span stylecolor:red;{{ errors }}/spaninput typesubmit value提交 classbtn btn-primary/form/div{% endblock content %} rbac/templates/delete.html {% extends layout.html %}{% block content %}div classluffy-containerdiv classalert alert-danger rolealertform action methodpost novalidate{% csrf_token %}p stylefont-size: 13px;i classfa fa-warning aria-hiddentrue/i删除后将不可恢复请确认是否删除/pdiv stylemargin-top: 20pxa href{{ cancel }} classbtn btn-default btn-sm取消/ainput typesubmit value确认 classbtn btn-danger btn-sm//div/form/div/div
{% endblock content %} 转载于:https://www.cnblogs.com/lshedward/p/10501937.html