zoukankan      html  css  js  c++  java
  • inclusion_tag 界面的嵌套 和渲染

    后端的html渲染到前端:

    如果后端直接定义的是html标签,传到前端的时候因为浏览器的安全机制就会直接渲染成字符串如果想要渲染成需要的标签,就需要在后端用make_save()进行包裹,或者直接在前端的要渲染的标签后面加上 | safe

     

    首先我们要用Library进行界面的交互渲染 就需要放在特定的文件夹内

    这个文件夹必须叫:templatetags

    当你的逻辑部分和前端界面交互的时候可能会出现嵌套的部分:

    Library

    from django.template import Library
    from django.conf import settings
    
    register = Library()
    
    
    @register.inclusion_tag("rbac/menu.html")   # 这个装饰器式先加载这个html界面然后再去下面拿到数据进行渲染这个界面
    def menu(request):

    也就是你需要用到library来尽心设置一个装饰器 这个装饰器会让你的后端逻辑和前端的代码进行交互

    渲染

    因为有浏览器的保护策略 你的后端html标签无法显示需要 |safe 或者后端 的mark_safe 

    Library 生成的实例对象一共可以有三种方式:

    inclusion_tag和filter还有另一种(我忘了2333):

    from django.template import Library
    
    
    register = Library()  #生成实例
    
    @register.inclusion_tag('rbac/menu.html')   # 这个装饰器式先加载这个html界面然后再去下面拿到数据进行渲染这个界面
    def menu(request):
        pass
    
    
    @register.filter()  #这个是过滤  你所提交的信息在前端界面筛选的时候可以使用|进行条件的判断
    
    def has_permission(request,name):
        pass

    eg:

      

    @register.inclusion_tag('rbac/menu.html')
    def menu(request):
        """
        生成菜单
        :param request:
        :return:
        """
        # 获取到所有的一级菜单列表
        menu_list = request.session.get(settings.MENU_KEY)
    
        # 为默认选中的URL设置active
        # for item in menu_list:
        #     reg = "^%s$" % item['url']
        #     if re.match(reg,request.path_info):
        #         item['class'] = 'active'
        return {'menu_list':menu_list}
  • 相关阅读:
    汉诺塔实现笔记
    python-nmap的函数学习
    字符串匹配的KMP算法(转)
    QT下的贪吃蛇
    PentestBox在win10里打不开工具
    Dalvik虚拟机执行流程图
    用dx生成dex时遇到class name does not match path
    python3 小工具
    python3的Cryptodome
    前端学习笔记 day02 CSS
  • 原文地址:https://www.cnblogs.com/zhaoyunlong/p/9515247.html
Copyright © 2011-2022 走看看