一、常用标签

模板标签

标签在渲染的过程中提供任意的逻辑。这个定义是刻意模糊的。例如,一个标签可以输出内容,作为控制结构,例如 “if”语句或“for”循环从数据库中提取内容,甚至可以访问其他的模板标签。

标签语法:由{% %}来定义的,例如:{% tag %} {% endtag %}

常用标签

1、 if/elif/else:可以使用and/or/in/not/==/!=/<=/>=,来进行判断。ifequal/ifnotequal   li = ['x', 'y', 'z']

2、 for...in...:跟python中的for...in...用法一样。

forloop.counter:当前迭代的次数,下标从1开始。 1,2,3

forloop.counter0:当前迭代的次数,下标从0开始。0,1,2

forloop.revcounter:当前迭代的次数,下标从大到小。3,2,1

forloop.revcounter0:当前迭代的次数,下标从大到小。2,1,0

forloop.first:返回bool类型,如果是第一次迭代,返回True,否则返回Flase。

forloop.last:返回bool类型,如果是最后一次迭代,返回True,否则返回Flase。

forloop.parentloop:如果发送多层for循环嵌套,那么这个变量返回的是上一层的for。

3、 for...in...empty...:如果没有数据,跳转到empty中。

4、 load:加载第三方标签,最常用的是{% load static %}。

5、 url:返回一个命名了的URL的绝对路径。

6、 with:缓存一个变量。

7、 autoescape:开启和关闭自动转义。

<!--if的例子-->
{% if name == 'python' %}
这个是python的页面
{% elif name == 'django' %}
这个是django的页面
{% else %}
哈哈哈! 是{{ name }}的呢!
{% endif %}
<!--for的例子-->
{% for i in ls %}
{% if forloop.counter == 1 %}
<li>这个是第一个值</li>
{% else %}
<li>{{ i }}</li>
{% endif %}
{% endfor %}
<!--url页面转换的例子-->
<!--urls.py文件代码-->
path('index5/', views.index_5),
path('article_new/', views.article_new, name='new_article'),
path('test/<int:t_id>/', views.test, name='test'),
<!--html代码 -->
<a href="/book/index5/">到过滤器那个页面</a><br>
<a href="{% url 'new_article' %}">新的文章</a><br>
<a href="{% url 'test' 123 %}">url加参数传递</a><br> <!--with的使用 -->
{% with test_name as tn %}
11111{{ tn }}<br>
22222{{ tn }}
{% endwith %}
<!--autowscape的使用 -->
原始的:{{ html }}<br>
过滤器方式:{{ html |safe }}<br>
标签方式:
{% autoescape off %}
{{ html }}<br>
{% endautoescape %}

二、模板的继承与引用

Django模板引擎中最强大也是最复杂的部分就是模板继承了。模板继承可以让你创建一个基本“骨架”模版。它包含你站点的全部元素,并且可以定义能够被子模版覆盖的blocks。

1. 创建三个模板文件,base.html, indexxx.html, ss.html

2. base.html中的内容

3. ss.html中的内容

4. indexxx.html中的内容

模板继承的总结

模板基础层使用extends标签实现。通过使用block来给子模版开放接口。

1. extends必须是模板中的第一个出现的标签。

2. 子模版中的所有内容,必须出现在父模板定义好的block中,否则django将不会渲染。

3. 如果出现重复代码,就应该考虑使用模板。

4. 尽可能多的定义block,方便子模板实现更细的需求。

5. 如果在某个block中,要使用父模板的内容,使用block.super获取。

最新文章

  1. JS魔法堂:不完全国际化&amp;本地化手册 之 实战篇
  2. LayaAir引擎——(四)
  3. POJ 3468 A Simple Problem with Integers(线段树 成段增减+区间求和)
  4. bootstrap源码分析之form、navbar
  5. ORM框架
  6. arcgis union 0x80040218
  7. Python获取web页面信息
  8. LoaderManager使用具体解释(二)---了解LoaderManager
  9. 深入浅出Android之学习笔记
  10. Ubuntu 16.10的root默认密码设置
  11. 30个你 “ 不可能全部会做 ” 的javascript题目
  12. Tkinter(2.x 与3.X的区别)
  13. 【iCore1S 双核心板_ARM】例程十一:RTC实时时钟实验——显示时间和日期
  14. 【Docker】文件拷贝
  15. &quot;学霸&quot;系统Alpha版本发布说明
  16. 认识电脑的开机流程与主引导分区(MBR)
  17. 发布vue插件到npm上
  18. Listview getItemViewType的使用
  19. MySQL5.6之Index Condition Pushdown(ICP,索引条件下推)-Using index condition
  20. JDK源码学习笔记——LinkedList

热门文章

  1. SICP 笔记:环境配置
  2. springboot配置文件中的基本配置
  3. C语言-链表流星雨(EsayX)
  4. 8. C程序测试用数组个人技巧
  5. 高精度计算_vector
  6. 基础篇之DOS命令
  7. Nginx 配置https的单向或双向认证
  8. Linux基础第十一章:日志文件及如何使用rsyslog搭建小型日志服务器
  9. nmap扫描
  10. DevOps Gitlab环境部署