一、模板变量笔记:
1、在模版中使用变量,需要将变量放到‘{{}}’中。'{{ 变量 }}'
2、如果想访问对象的属性,可以通过'对象.属性名'的方式访问
3、如果想要访问一个字典的key对应的value,那么只能通过'字典.key'
4、因为在访问字典的'key'时候也用‘.’来访问,因此不能在字典中定义本身就有的属性名当做‘key’,否则字典的那个属性将为编程字典中的key了
5、如果想要访问列表或者元组,那么也是通过‘.’的方式访问,不用通过'[]'的方式访问。

二、前端模板中的for循环
1、'if'标签:if标签相当于‘python’中的if语句,有'elif'和'else'相对应,但是所有的标签都需要用标签符号('{%%}')进行包裹。if标签中可以使用'=='、!=、<、>、<=、>=、in、not in、is、is not'等判断运算符。等判断运算符。
2、'for ... in ...'标签:用法和python中的一样,可以遍历列表、元组、字符串、字典等一切可以遍历的对象。
如果想要反向遍历,那么在遍历的时候加上'reversed'。实例代码:

    {% for student in students%}
<p>{{ student.name }} </p>
<p>{{ student.age }} </p
{% endfor %}

3、遍历字典:实例代码:

{% for key,value in students.items %}
<p>{{key}}:{{value}}</p>
{% endfor %}

4、在for循环中提供了一些参数:
<1> forloop.counter:当前循环的下标。以1作为起始值。
<2> forloop.counter0:当前循环的下标。以0作为起始值。
<3> forloop.revcounter:当前循环的反向下标值。比如列表有10个元素,那么第一次遍历这个属性是等于10,第二次是9,以此类推。并且是以1作为最后一个元素的下标。
<4> forloop.revcounter0:与forloop.revcounter类似,只不过最后一个元素的下标是0.
<5> forloop.first:是否为第一次遍历,适用于针对第一行设置不同时使用。
<6> forloop.last:是否为最后一次遍历,适用于针对最后一行设置不同时使用。
<7> forloop.parentloop:如果有多个循环嵌套,那么这个属性代表的是上一级的for循环。
5、for...in...empty:这个使用跟for...in...一样,其不同之处是,在遍历对象时,如果没有元素的情况下,会执行'empty'中的内容。示例代码:

{% for studet in students %}
<li>{{ student }}</li>
{% empty %}
暂时没有学生
{% endfor %}

三、前端模版中使用with标签
在模版中定义变量。有时候一个变量访问的时候比较复杂,那么可以先把这个复杂的变量缓存到一个变量上,以后直接使用这个变量就可以了。

     context ={
'students': ['小明','小溪']
} {% with list1=students.1 %}
<p>{{ list1 }}</p>
{% endwith %}

在使用with标签时需要注意:
1、在with语句中定义的变量,只能在{% with %}{% endwith %}中使用,不能在这个标签外使用。
2、定义变量的时候,不能在等号左右两边留空格。比如{% with list1 = students.1 %}是错误的。
3、还有另外一种写法同样也是支持的:

         {% with students.1 as list1 %}
<p>{{ list1 }}</p>
{% endwith %}

四、url标签
   在模版中,我们经常要写一些'url',当我们直接在页面里使用硬编码写死这个'url'时,后期维护起来成本是很高的。这时可以使用url标签。用法类似于django中的'reverse'。

<a href="{% url 'book:list' %}'">图书列表页</a>

  如果需要传递参数到后端时怎么办?这时可以使用位置参数或者关键字参数。记住,两者不能同时使用,且在有多个参数时,使用空格进行分割,不要使用','。

    # path部分
path('detail/<book_id>/<chapter_id>/', views.book_detail, name='detail') # 前端使用url反转,使用位置参数
<a href="{% url 'book:detail' 1 1 %}'">图书详情页</a> # 前端使用url反转,使用关键字参数
<a href="{% url 'book:detail' book_id=1 chapter_id=1 %}'">图书详情页</a>

五、spaceless标签:移除HTML标签中的空白字符,包括空格、tab键、换行等。示例代码如下:

     {% spaceless %}
<p>
<a href='foo/' >Foo</a>
</p>
{% endspaceless %}

渲染后:

<p><a href='foo/' >Foo</a></p>

spaceless只会移除html标签之间的空白字符。而不会移除标签与文本之间的空白字符。例如:

    <span>
不会压缩
</span>

这时是不会压缩span标签里的。

六、autoescape标签
开启或关闭这个标签内元素的自动转义功能。自动转义是可以将一些特殊字符转义成html语法能识别的字符。比如<会被转义成&lt,而>会被转义成&gt。模版中默认是开启了自动转义的。实例代码如下:

     # 传递的上下文信息
context = {
"info": "<a href='www.baidu.com'>百度</a>"
}
# 模版中关闭自动转义
{% autoescape on %}
{{ info }}
{% endautoescape %}

这时在文中就会显示为百度的超链接。如果将on改为off,则会显示成一个普通字符串。

七、verbatim标签:默认会在前端模版中解析那些特殊字符,比如{%和%}以及{{等等。如果你在某个代码片段中不想使用模版解析引擎,只需将代码放在verbatim标签中即可。

     {% verbatim %}
{{ if }}
{% endverbatim %}

django 模版标签笔记的更多相关文章

  1. django 模版-标签-视图-csrf-token-模版继承-HTML过滤器

    """ ******模版****** --定义模版-- **变量** 视图传递给模版的数据 注意1:要遵守标识符规则 语法:{{var(即变量)}} 如果使用的变量不存在 ...

  2. Django模版语言的复用 1. include标签--模版导入 2.inclusion_tag自定义标签--模版导入 3.母版

    include标签--模版导入 ''' 前提:项目中,往往会出现多个页面拥有一个或几个相同的页面版块,或是一个页面多个页面版块是相同的 如何运用:可以将多个样式标签的集合进行封装,对外提供版块的名字( ...

  3. Django商城项目笔记No.12用户部分-QQ登录2获取QQ用户openid

    Django商城项目笔记No.12用户部分-QQ登录2获取QQ用户openid 上一步获取QQ登录网址之后,测试登录之后本该跳转到这个界面 但是报错了: 新建oauth_callback.html & ...

  4. Django商城项目笔记No.5用户部分-注册接口-短信验证码

    Django商城项目笔记No.4用户部分-注册接口-短信验证码 短信验证码也保存在redis里(sms_code_15101234567) 在views中新增SMSCodeView类视图,并且写出步骤 ...

  5. django 模版 语法与使用

    目录 django 模版语法与使用 django模板语言介绍 (摘自官方文档) 链接 什么是模板? 模板语句的 注释 变量 {{ 变量 }} 点(.)在模板语言中有特殊的含义,用来获取对象的相应属性值 ...

  6. Django 模版语法与使用

    目录 Django 模版语法与使用 django模板语言介绍 (摘自官方文档) 链接 什么是模板? 模板语句的 注释 变量 {{ 变量 }} 点(.)在模板语言中有特殊的含义,用来获取对象的相应属性值 ...

  7. 【三】Django模版的使用

    作为Web框架,Django提供了模板,可以很便利的动态生成HTML 模版系统致力于表达外观,而不是程序逻辑 模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用 ...

  8. Django模版语言 格式化显示 后台datatime()时间

    Django模版语言 格式化显示 后台datatime()时间 场景描述:

  9. django 自定义标签和过滤器

    django 自定义标签和过滤器 Django支持自定义标签和过滤器.起初还不太重视它这项功能,但最近试了试自定义标签.发现django这个功能实在是太爽了. 首先在你项目的一个app中建立一个pyt ...

随机推荐

  1. ubuntu16.04spyder闪退

    解决办法我试了好用 sudo pip install --upgrade html5lib==.0b8 完事.

  2. VS2015打开失败

    在使用VS2015过程中之前能打开的.Net项目,结果突然就不能使用了.我就不能理解了,后来找了一个方法,抱着试试的心态结果就成功了. 解决办法 第一步: 开始-->所有程序-->Micr ...

  3. MNIST数据集环境搭建

    由于换了电脑,ubuntu是重新下载的,因此记录一些相关数据集的搭建: 首先是data数据集,在第七讲中 我们需要建立data文件夹,并将数据集放进去 再就是model模型 我们应该新建一个model ...

  4. easy-rules

    我们在写业务代码经常遇到需要一大堆if/else,会导致代码可读性大大降低,有没有一种方法可以避免代码中出现大量的判断语句呢?答案是用规则引擎,但是传统的规则引擎都比较重,比如开源的Drools,不适 ...

  5. AcWing 869. 试除法求约数

    #include <iostream> #include <algorithm> #include <vector> using namespace std; ve ...

  6. Caffe实例

    下载链接以及说明:  1.caffe代码按照官方教程下载windows分支下面的就可以了(https://github.com/BVLC/caffe/tree/windows). 2.cmake(ht ...

  7. 每天进步一点点------YUV格式详细解释

    YUV格式详细解释 YUV开放分类: 网络.计算机.手机.色彩学.影像学  概述  YUV(亦称YCrCb)是被欧洲电视系统所采用的一种颜色编码方法(属于PAL),是PAL和SECAM模拟彩色电视制式 ...

  8. 论STA | 工艺、工具、分析的本与末

    人类从漫长的蒙昧中觉醒之后,不再依靠着奇装异服的巫师通灵来指导生活,巫师进化成了科学家,他们试图对周遭的一切进行概括.分类.抽象,于是有了化学.物理.数学等基科.比如一粒沙,它的化学组成是什么,物理特 ...

  9. 2017年陕西省网络空间安全技术大赛——人民的名义-抓捕赵德汉2——Writeup

    下载下来的文件是一个jar包,用die和binwalk检查,确实是一个纯正的jar包 java -jar FileName运行jar包,观察文件的外部特征,发现也是判断password的题目 ​ 用查 ...

  10. 解密国内BAT等大厂前端技术体系-美团点评之下篇(长文建议收藏)

    引言 在上篇中,我已经介绍了美团点评的业务情况.大前端的技术体系,其中大前端的技术全景图如下: 上篇重点介绍了工程化和代码质量的部分,工程化涵盖了客户端持续集成平台-MCI.全端监控平台-CAT.移动 ...