Django的模板渲染(二)

简介: Django的模板渲染(二)

Django的模板渲染(一):https://developer.aliyun.com/article/1495681

date

格式化,如果 value=datetime.datetime.now()

{{ value|date:“Y-m-d H:i:s”}} 年月日 时分秒

关于时间日期的可用的参数(除了Y,m,d等等)还有很多,有兴趣的可以去查查看看。

分钟用 i 获取

safe

xss攻击. 跨站脚本攻击 现在浏览器对于用户评价的标签全部存为字符串,预防xss攻击

 Django的模板中在进行模板渲染的时候会对HTML标签和JS等语法标签进行自动转义,原因显而易见,这样是为了安全,

django担心这是用户添加的数据,比如如果有人给你评论的时候写了一段js代码,

这个评论一提交,js代码就执行啦,这样你是不是可以搞一些坏事儿了,

写个弹窗的死循环,那浏览器还能用吗,是不是会一直弹窗啊,这叫做xss攻击,所以浏览器不让你这么搞,给你转义了。

但是有的时候我们可能不希望这些HTML元素被转义,比如我们做一个内容管理系统,后台添加的文章中是经过修饰的,

这些修饰可能是通过一个类似于FCKeditor编辑加注了HTML修饰符的文本,如果自动转义的话显示的就是保护HTML标签的源文件。

为了在Django中关闭HTML的自动转义有两种方式,如果是一个单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义。


我们去network那个地方看看,浏览器看到的都是渲染之后的结果,通过network的response的那个部分可以看到,

这个a标签全部是特殊符号包裹起来的,并不是一个标签,这都是django搞得事情。

默认Django会把后端传来的标签设为字符串在前端展示

如果我们想实现展示标签效果,可以通过safe过滤器实现

实现了标签的效果,可以点击

truncatechars

如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“…”)结尾。

参数:截断的字符数

         {{ value|truncatechars:9}} #注意:最后那三个省略号也是9个字符里面的,也就是这个9截断出来的是6个字符+3个省略号,有人会说,怎么展开啊,配合前端的点击事件就行啦

展示5个,多余的以三个点号展示,展示的个数是 设置的个数减一

四 if标签

{% if %}会对一个变量求值,如果它的值是“True”(存在、不为空、且不是boolean类型的false值),对应的内容块会输出。

比较符号和数值之间要有空格

{% if num > 100 or num < 0 %}
    <p>无效</p>  <!--不满足条件,不会生成这个标签-->
{% elif num > 80 and num < 100 %}
    <p>优秀</p>
{% else %}  <!--也是在if标签结构里面的-->
    <p>凑活吧</p>
{% endif %}

如果判断不成立,标签不会展示

当然也可以只有if和else

{% if user_list|length > 5 %}  <!--结合过滤器来使用-->
  七座豪华SUV
{% else %}
    黄包车
{% endif %}


{% if age > 18 or number > 100 %} <!-- 符号两边必须有空格 -->
    <h1>太老了</h1>
{% elif age == 18 %}
    <h1>还行</h1>
{% else %}
    <h1>挺嫩</h1>
{% endif %}

{% if hobby|length > 3 %}   <!-- 可以配合过滤器来使用 -->
    <h1>爱好还挺多</h1>
{% else %}
    <h1>爱好不够多</h1>
{% endif %}

f语句支持 and 、or、==、>、<、!=、<=、>=、in、not in、is、is not判断,注意条件两边都有空格。

五 with

给调用过程比较长的数据起别名的.

给调用过程比较长的数据起别名的.

使用一个简单地名字缓存一个复杂的变量,多用于给一个复杂的变量起别名,当你需要使用一个“昂贵的”方法(比如访问数据库)很多次的时候是非常有用的

例如:

注意等号左右不要加空格。

{% with total=business.employees.count %}
    {{ total }} <!--只能在with语句体内用-->
{% endwith %}


{% with business.employees.count as total %}
    {{ total }}
{% endwith %}

案例

注意:这个with起的别名,只在with语句里面生效,在外面写不生效

相关文章
|
4月前
|
SQL 前端开发 JavaScript
Python 教程之 Django(10)模板
Python 教程之 Django(10)模板
37 0
|
4月前
|
API 数据库 Python
Python 教程之 Django(8)在 Django 管理界面中渲染模型
Python 教程之 Django(8)在 Django 管理界面中渲染模型
24 0
Python 教程之 Django(8)在 Django 管理界面中渲染模型
|
14天前
|
前端开发 JavaScript 开发者
Django的模板渲染(一)
Django的模板渲染(一)
|
28天前
|
开发者 Python
Django模板系统的强大之处:动态渲染与扩展性
【4月更文挑战第15天】Django模板系统是Web开发中的强大工具,支持动态渲染和扩展性。动态渲染包括变量、标签和过滤器的使用,实现内容根据上下文数据动态生成。模板继承和自定义标签则提升了扩展性,减少代码重复,增强可维护性。通过这些特性,Django模板系统助力开发者构建高效、动态的Web应用。
|
1月前
|
前端开发 JavaScript C++
【掰开揉碎】Django模板 vs 前端框架:选择合适的渲染方式
【掰开揉碎】Django模板 vs 前端框架:选择合适的渲染方式
|
1月前
|
Python
Django 模板:构建动态网页的关键
Django 模板:构建动态网页的关键
29 9
|
4月前
|
前端开发 JavaScript Python
Django 模板中使用 Ajax POST
Django 模板中使用 Ajax POST
18 0
|
5月前
|
前端开发 JavaScript 数据库
Python 教程之 Django(10)模板
Python 教程之 Django(10)模板
40 0
|
5天前
|
前端开发 UED Python
Wagtail-基于Python Django的内容管理系统CMS实现公网访问
Wagtail-基于Python Django的内容管理系统CMS实现公网访问
|
5天前
|
中间件 Python
中间件应用Django Middleware(Python)
【5月更文挑战第3天】中间件应用Django Middleware(Python)
33 6
中间件应用Django Middleware(Python)