热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Django学习之模板标签和变量

safe过滤器和{%autoescape%}标签首先看这样一个例子:views.py中:c<h3>更上一层楼&a

safe过滤器和{% autoescape %}标签

首先看这样一个例子:

views.py中:

c = '

更上一层楼

'

render(request,'test.html',{'content': c})

然后再html中使用变量{{ content }}

Django学习之模板标签和变量

上述例子就涉及到了过滤器safe,如果不加safe标记,html字符串是会被自动转义的(即原样输出);禁止自动转义之后,按html格式输出变量内容。

 

而如果使用到{% autoescape %}标签:

Django学习之模板标签和变量

参数为off,禁止自动转义;

参数为on,开启自动转义。

拓展:参数为off,但是加了escape过滤器,结果是开启自动转义。

 

block标签

{% block foo %}

这个标签中的内容将会被子模板中的覆盖。

 

comment标签

此标签中的内容不会被显示,为注释内容

{% comment %}
{{ content }}

注释内容

{% endcomment %}

上述内容不会在html中显示。

注:该标签不能被嵌套使用。

 

csrf_token标签

此标签用来实现CSRF保护。

 

cycle标签

用来进行循环的标签,但是只能循环3次。

{% cycle 'a' 'b' 'c' 'd' 'e' %}

前端渲染结果为:

Django学习之模板标签和变量

也可以用模板变量代替字符串,或者2者混用。

cycle后面至少要有2项目,不然会报“模板语法”错误。

也可以使用别名:

{% cycle 'a' 'b' 'c' 'd' 'e' as kk %}
  {{ kk }}

但是,效果却不是我们预期的那样:

Django学习之模板标签和变量

想要我们预期的效果,标签最后加个silent参数:

{% cycle 'a' 'b' 'c' 'd' 'e' as kk silent %}
  {{ kk }}

Django学习之模板标签和变量

另外,如果想每次循环都重头开始(即3次都循环一个元素),使用{% resetcycle %}:

{% cycle 'a' 'b' 'c' 'd' 'e' as kk silent %}
  {{ kk }}
{% resetcycle %}

Django学习之模板标签和变量

debug标签

输出debug信息。不过注意,最好把该标签包含在

元素中(对文本进行预格式化,pre用来显示格式化的内容),这样才能以友好的形式显示。

 

extends标签

用来拓展模板的。表明本模板的父模板。

{% extends "./base2.html" %}
{% extends "../base1.html" %}
{% extends "./my/base3.html" %}

从1.10开始可以写成相对路径。

 

filter标签

用来过滤。

{% filter force_escape|lower %}
    This text will be HTML-escaped, and will appear in all lowercase.
{% endfilter %}

Django学习之模板标签和变量

 

firstof标签

相当于if...else...

{% firstof var1 var2 var3 %}

等效于:

{% if var1 %}
    {{ var1 }}
{% elif var2 %}
    {{ var2 }}
{% elif var3 %}
    {{ var3 }}
{% endif %}

也可以设置默认值:

{% firstof var1 var2 var3 "fallback value" %}

 

for标签

用来循环。

如果变量对象如下:

c = [['hello','tom',],]

可以这样来取子列表的中的元素:

{% for a,b in content %}
  

{{ a }},{{ b }}

{% endfor %}

显示结果:

Django学习之模板标签和变量

for...empty标签

条件不成立时,显示的对象。

    {% for athlete in athlete_list %}
  • {{ athlete.name }}
  • {% empty %}
  • Sorry, no athletes in this list.
  • {% endfor %}

 

if标签

用来做判断的,但是注意and的优先级高于or。

is用来判断值是否相同。

{% if somevar is True %}
  This appears if and only if somevar is True.
{% endif %}

如果somevar = True则会显示文字,否则不显示内容;不存在的变量,值统一为None,可以依此判断对象是否存在。

 

include标签

用来设置公共模板。很多时候,该标签容易和extends标签弄混淆。但是一个作用是父模板,一个是公共模板。

{% include './public.html' %}

Django学习之模板标签和变量

 

load标签

用来载入模板标签。

{% load foo bar from somelibrary %}

from关键字可以实现载入指定的几个模板标签。

 

now标签

用来显示时间。

It is {% now "jS F Y H:i" %}

分别表示日,月,年,小时,分钟。后面不加参数会报错!

可以取别名,使用as参数。

{% now "Y" as current_year %}
{% blocktrans %}Copyright {{ current_year }}{% endblocktrans %}

 

url标签

用来表示URL。

{% url 'app-views-client' client.id %}

client.id为URL中的参数。

还可以使用别名:

{% url 'some-url-name' arg arg2 as the_url %}

这样变量the_url就可以表示前面的URL。

 

static标签

用来载入静态资源。

{% load static %}
"{% static "images/hi.jpg" %}" alt="Hi!" />

 

总结:过滤器在此没有怎么讲,是因为我们在函数中能实现更加强大的过滤功能,很多过滤器不怎么用!更为详细的内容可以访问:

https://docs.djangoproject.com/en/1.11/ref/templates/builtins/

 


推荐阅读
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 使用Numpy实现无外部库依赖的双线性插值图像缩放
    本文介绍如何仅使用Numpy库,通过双线性插值方法实现图像的高效缩放,避免了对OpenCV等图像处理库的依赖。文中详细解释了算法原理,并提供了完整的代码示例。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • python的交互模式怎么输出名文汉字[python常见问题]
    在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>,此时我们可以使用print() ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 优化ASM字节码操作:简化类转换与移除冗余指令
    本文探讨如何利用ASM框架进行字节码操作,以优化现有类的转换过程,简化复杂的转换逻辑,并移除不必要的加0操作。通过这些技术手段,可以显著提升代码性能和可维护性。 ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
author-avatar
何cecilio
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有