首页 > 其他分享 >基于django前端页面动态菜单

基于django前端页面动态菜单

时间:2023-05-24 12:22:19浏览次数:33  
标签:info 菜单 menu request django xx user text 页面

1、settings中定义基于中间件变量的字典

UNICOM_MENU = {
    'leader': [ 
        {'text': '用户管理', 'url': '/xx/xx/'},
        {'text': '订单管理', 'url': '/xx/xx/'},
        {'text': '工单管理', 'url': '/xx/xx/'},
    ],
    'user': [
        {'text': '用户管理', 'url': '/xx/xx/'},
        {'text': '订单管理', 'url': '/xx/xx/'},
    ]
}

 

1.1中间件
 1 from django.utils.deprecation import MiddlewareMixin
 2 from django.shortcuts import redirect
 3 class AuthMiddleware(MiddlewareMixin):
 4     def process_request(self, request):
 5         # 0.无需登录的地址,放行
 6         if request.path_info == "/login/":
 7             return
 8 
 9         # 1.获取用户session信息
10         # {"id": admin_object.id, 'username': admin_object.username}
11         user_info = request.session.get("user_info")
12 
13         # 2.有值,表示已登录,则继续
14         if user_info:
15             request.unicom_id = user_info['id']
16             request.unicom_username = user_info['username']
17             request.unicom_role = user_info['role']
18             return
19 
20         # 3.无值=None
21         return redirect('/login/')

 


2、已注册app中创建templatetags目录
  • 创建一个文件(任意命名)

  • 编写如下代码

  • from django.template import Library
    from django.conf import settings
    
    register = Library()
    
    
    @register.inclusion_tag('menu.html')
    def unicom_menu(request):
        role = request.unicom_role
        menu_list = settings.UNICOM_MENU[role]
        return {'menu_list': menu_list}

     

3、templates中创建menu.html并编写如下内容

{% for menu in menu_list %}
    <li><a href="{{ menu.url }}">{{ menu.text }}</a></li>
{% endfor %}

 


4、前段页面调用
{% load menu %}

{% unicom_menu request %}

 

标签:info,菜单,menu,request,django,xx,user,text,页面
From: https://www.cnblogs.com/zhuangjoo/p/17427938.html

相关文章

  • 界面控件DevExtreme使用指南 - 如何自定义上下文菜单和工具栏
    DevExtreme FileManager(文件管理器)小部件现在支持自定义内置的工具栏和上下文菜单,用户可以使用标准和定义的命令项填充项目集合,并配置设置来更改其外观和操作。DevExtreme拥有高性能的HTML5/JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NETCore,jQu......
  • MAUI Blazor学习7-实现登录跳转页面
    MAUIBlazor学习7-实现登录跳转页面 MAUIBlazor系列目录MAUIBlazor学习1-移动客户端Shell布局-SunnyTrudeau-博客园(cnblogs.com)MAUIBlazor学习2-创建移动客户端Razor页面-SunnyTrudeau-博客园(cnblogs.com)MAUIBlazor学习3-绘制ECharts图表-SunnyTrudeau......
  • Flask与Django项目运行
    Django要运行Django项目,你可以按照以下步骤进行操作:1.确保你已经安装了Python和Django。如果你还没有安装它们,请先安装它们。2.打开终端或命令提示符。3.导航到你的Django项目的根目录。这是包含manage.py文件的目录。4.运行以下命令以应用数据库迁移:pythonmanage.pymigra......
  • 解决nginx+django+swagger打开swagger需要进行Django Login
    一、将drf-yasg包的static目录拷贝到Django项目根目录下二、修改nginx配置,添加如下红框中的内容三、重启nginxsystemctlrestartnginx这样再次打开http://XXX:XX/swagger/即可直接打开swagger接口文档 ......
  • 仿京东淘宝购物商城手机小程序全套页面业务流程源码
    分享一个仿淘宝京东商城的小程序源码,是使用微信开发者工具开发的,亲测可直接运行。该程序包含了详细完整的框架架构结构,从设计上满足了相关应用服务的设计要求,是一款非常值得学习小程序源码。源码地址项目目录效果预览......
  • 菜单前三次点菜程序总结
    (1)前言(2)设计与分析(3)采坑心得(4)主要困难以及改进建议(5)总结前言: 题目知识点题量(※※※※※)难度(※※※※※)点菜11.区别和学会使用了对象和类;2.基本语法,如输入输出,基本类型和包裹类型3.常见的处理字符串的方法4.方法静态和不静态的使用5.类构造方法的使用6.......
  • flutter 使用Get.toName跳转到新页面,返回刷新列表页面
    flutter使用Get.toName跳转到新页面,在新页面执行操作,比如说删除某个对象,需要返回页面刷新列表页面1.Get.toNamed(routes)!.then((value)=>refresh);其中的refresh是执行刷新后的方法2.Get.back(result:'backtorefresh');......
  • django——继承默认User模型进行自定义
    自定义用户模型在Django中非常常见。下面是一个简单的示例,演示如何扩展Django默认的User模型,以添加自定义字段和方法:python复制代码fromdjango.contrib.auth.modelsimportAbstractUserfromdjango.dbimportmodelsclassCustomUser(AbstractUser):#添加自定......
  • 直播平台源码,Layui-open 打开一个新页面
    直播平台源码,Layui-open打开一个新页面         edit:function(){        var_this=this;          varindex=layui.layer.open({            skin:'',          ......
  • 爱词霸 页面bug
    链接到:http://ciba.iciba.com/{"error_msg":"failedtomatchanyroutes"}欢迎关注公-众-号【TaonyDaily】、留言、评论,一起学习。文章来源:刘俊涛的博客若有帮助到您,欢迎点赞、转发、支持,您的支持是对我坚持最好的肯定(_)......