热门标签 | 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/

 


推荐阅读
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文介绍了为什么要使用多进程处理TCP服务端,多进程的好处包括可靠性高和处理大量数据时速度快。然而,多进程不能共享进程空间,因此有一些变量不能共享。文章还提供了使用多进程实现TCP服务端的代码,并对代码进行了详细注释。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 移动端常用单位——rem的使用方法和注意事项
    本文介绍了移动端常用的单位rem的使用方法和注意事项,包括px、%、em、vw、vh等其他常用单位的比较。同时还介绍了如何通过JS获取视口宽度并动态调整rem的值,以适应不同设备的屏幕大小。此外,还提到了rem目前在移动端的主流地位。 ... [详细]
  • 基于移动平台的会展导游系统APP设计与实现的技术介绍与需求分析
    本文介绍了基于移动平台的会展导游系统APP的设计与实现过程。首先,对会展经济和移动互联网的概念进行了简要介绍,并阐述了将会展引入移动互联网的意义。接着,对基础技术进行了介绍,包括百度云开发环境、安卓系统和近场通讯技术。然后,进行了用户需求分析和系统需求分析,并提出了系统界面运行流畅和第三方授权等需求。最后,对系统的概要设计进行了详细阐述,包括系统前端设计和交互与原型设计。本文对基于移动平台的会展导游系统APP的设计与实现提供了技术支持和需求分析。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • pytorch Dropout过拟合的操作
    这篇文章主要介绍了pytorchDropout过拟合的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完 ... [详细]
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社区 版权所有