inclusion_tag 界面的嵌套 和渲染

后端html渲染到前端技术详解
本文深入探讨了后端如何将html标签渲染至前端,包括使用make_save()包裹html标签、设置inclusion_tag装饰器实现逻辑与界面交互、以及在渲染过程中遇到的安全策略与解决方案。同时介绍了Library生成实例对象的三种方式,并通过示例代码演示了具体应用。

 

 

后端的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}

 

转载于:https://www.cnblogs.com/zhaoyunlong/p/9515247.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值