当前位置: 首页 > 编程笔记 >

django 模版关闭转义方式

申屠森
2023-03-14
本文向大家介绍django 模版关闭转义方式,包括了django 模版关闭转义方式的使用技巧和注意事项,需要的朋友参考一下

django 模版显示的html中出现'类似的ascii字符,这是由于django对单引号进行了转义,可以通过关闭转义解决html处理异常问题。

关闭django转义的方法有如下两种:

1.关闭单个模版变量的转义:

利用"|safe" 过滤器告诉django这个变量不需要转义, 如模版中:{{ data|sage }}

2.利用django模版标记关闭html或js块转义

{% autoescape off %}

code..

{% endautoescape %}

补充知识:Django使用mark_safe()和format_html()函数

django从view向template传递HTML字符串的时候,django默认不渲染此HTML,原因是为了防止这段字符串里面有恶意攻击的代码。

如果需要渲染这段字符串,需要在view里这样写:

from django.utils.safestring import mark_safe
 
def view(request):
  ....
  pageHtml = mark_safe("<a href='#'>首页</a>")
  ret =         
  {"equit_cate_list":list,"count":count,"ecform":ecform,"page":page,"pageHtml":pageHtml}
  return render(request, "list_equip_category.html",ret)

前端页面直接使用{{pageHtml}}即可。

mark_safe这个函数就是确认这段函数是安全的,不是恶意攻击的。

adminx中定义的一些插件等都是用mark_safe()进行渲染的。

format_html和mark_safe非常类似,本质还是调用mark_safe函数,不同在于传参方式,mark_safe直接传递完整的html字符串;

而format_html需要使用{}占位符:

format_html('<span style="color:{};">{}</span>', color_code, obj.approval)

以上这篇django 模版关闭转义方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 问题内容: Django在其模板中将其视为某些变量。我怎样才能逃避或或使得Django不把它当作变量。 应该打印完全一样。 问题答案: 我相信您正在寻找template标签。 如链接到文档所述, 由于模板系统没有“转义”的概念,因此要显示模板标签中使用的位之一,必须使用标签。 例如: 将显示为:

  • 问题内容: Django 在其模板中将其视为某些变量。我怎样才能逃避或使得Django不把它当作变量。 应该打印完全一样。 问题答案: 相信你正在寻找模板标记。 如链接到文档所述, 由于模板系统没有“转义”的概念,因此要显示模板标签中使用的位之一,必须使用标签。 例如: 将显示为:

  • 我有一个引导模式对话框,我想首先显示,然后当用户单击页面时,它就消失了。我有以下内容: 最初会显示该模式,但在模式之外单击该模式时不会关闭。此外,内容区域不是灰色的。我如何使模式显示最初,然后关闭后,用户点击该区域以外?我怎样才能让背景像演示一样变灰?

  • 我从这两个链接(js和css)导入JQuery Modal 我在正文中添加了以下html代码 下面是一个js文件 这样,模态就会像我预期的那样打开。问题是,当这结束时,我想关闭模态。但我找到的解决方案不起作用。我尝试了以下方法: 所有这些都不会像它应该的那样关闭模态(可能会隐藏模态,但不是全部,因为有一个黑屏) 我想这不应该这么难,但我进入的每个链接都告诉我要做一个 谢啦

  • 我使用EasyNetQ为RabbitMQ实现了一个简单的客户端。连接后,我收到通知“队列的模型关闭”。这是我的代码: 使用更低级的方法,一切都很好(消息长度显示在控制台中): 请提示,第一种方法有什么问题? UPD I 捕获了异常与 IntelliTrace : AMQP 操作已中断:AMQP 关闭原因,由 Peer 节点启动,代码=406,text=“PRECONDITION_FAILED -

  • 给定这个Java类: 给出以下Java代码: 我得到了这个输出:[值:1,值:2,值:3] 当我运行这段代码时: 我期望得到输出[Value:1,Value:4,Value:9],但我得到了[Value:1,Value:2,Value:3],所以列表中的元素没有被修改。 但是当我运行这个时: 这是: 我两次都得到了我期望的输出([Value: 1, Value: 4, Value: 9]) 为什么