Django

  1. 模板标签
  2. 常用标签
  3. 模板的继承与引用

模板标签

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

常用的标签

配置好url和视图

views.py

# 模板标签
def tem_tags(request):
return render(request, 'book/tags.html', context={
'str1': 'Django',
'str2': 'Flask',
'fruit_list': ['apple', 'pear', 'orange'],
'num_list': ['one', 'two', 'three'],
"whats_your_name": 'whoaU?',
'html': '<h1>hello world</h1>'
})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>模板标签</title>
<style>
</style>
</head>
<body>
<p></p>
if elif else
{% if str1 == 'tornado' %}
这是tornado课程
{% elif str1 == str2 %}
这是scrapy课程
{% else %}
这是{{ str1 }}课程
{% endif %}
<br> ifnotequal ifequal
{% ifnotequal str1 str2 %}
{{ str1 }}{{ str2}}是两个不同的课程
{% endifnotequal %}
<br>
{% for foo in fruit_list %}
{{ foo }}<br>
{% endfor %}
<br> forloop.counter0
{% for foo in fruit_list %}
{{ forloop.counter }}
{% if forloop.counter0 == 1 %}
{{ foo }}是梨子 <br>
{% elif forloop.counter0 == 0 %}
{{ foo }}是苹果 <br>
{% else %}
{{ foo }}是橘子
{% endif %}
{% endfor %}
<br> first last
{% for foo in fruit_list %}
{% if forloop.first %}
first is {{ foo }} <br>
{% endif %}
{% if forloop.last %}
last is {{ foo }} <br>
{% endif %}
{% endfor %}
<br> forloop.parentloop.
{% for foo in num_list %}
{% for fo in fruit_list %}
{% if forloop.parentloop.counter0 == 1 %}
{{ foo }} better {{ fo }} <br>
{% else %}
{{ foo }} {{ fo }} <br>
{% endif %}
{% endfor %}
{% endfor %}
<br> url
<a href="{% url 'static' %}">跳转到静态文件演示页面(参数后面用空格隔开)</a>
<br> with
{% with whats_your_name as o %}
{{ o }}<br>
{% endwith %}
<br> autoescape
{% autoescape on %}
{{ html }}
{% endautoescape %}
<br>
{% autoescape off %}
{{ html }}
{% endautoescape %}
</body>

页面结果:


 

 模板的继承与引用

  • Django模版引擎中最强大也是最复杂的部分就是模版继承了。 模版继承可以让你创建一个基本的“骨架”模版,它包含您站点中的全部元素,并且可以定义能够被子模版覆盖的 blocks 。
  • 模板继承使用extends标签实现。通过使用block来给子模板开放接口。
  • 1、extends必须是模板中的第一个出现的标签。
  • 2、子模板中的所有内容,必须出现在父模板定义好的block中,否则django将不会渲染。
  • 3、如果出现重复代码,就应该考虑使用模板。
  • 4、尽可能多的定义block,方便子模板实现更细的需求。
  • 5、如果在某个block中,要使用父模板的内容,使用block.super获取。

在模板文件夹中新建两个html文件

base.html文件中:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}base{% endblock %}</title>
<style>
</style>
</head>
<body>
  {% block content %}
  <p>这是基类模板文件</p>
  {% endblock %}
  {% block last %}
  <p>这是结尾的模板内容</p>
  {% endblock %}
</body>
</html>

index_1.html文件中:

{% extends 'inheritance_reference/base.html' %}

然后配置到url和view视图将index_1渲染出来:

现在我们来更改block里面的内容,做成我们自己的东西,将index_1.py中对应名字的block内容进行更改

{% extends 'inheritance_reference/base.html' %}
{% block title %}
我自己的网页
{% endblock %}
{% block content %}
<p>这是我自己的中心内容,不是继承来的</p>
{% endblock %}
{% block last %}
<p>这是我自己的结尾内容,不是继承来的</p>
{% endblock %}

再渲染出来查看

接下来我们来继承父类base中的内容,并加上我们自己的内容

{% extends 'inheritance_reference/base.html' %}
{% block title %}
我自己的网页
{% endblock %}
{% block content %}
{{ block.super }}
<p>这是我自己的中心内容,不是继承来的</p>
{% endblock %}
{% block last %}
{{ block.super }}
<p>这是我自己的结尾内容,不是继承来的</p>
{% endblock %}

现在再base中的block外面添加一句话,在index_1中也添加一句话

base.py

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}base{% endblock %}</title>
<style>
</style>
</head>
<body>
{% block content %}
<p>这是基类模板文件</p>
{% endblock %}
{% block last %}
<p>这是结尾的模板内容</p>
{% endblock %}
<p>这是base没有block包括的内容</p>
</body>
</html>

index_1.py中:

{% extends 'inheritance_reference/base.html' %}
{% block title %}
我自己的网页
{% endblock %}
{% block content %}
{{ block.super }}
<p>这是我自己的中心内容,不是继承来的</p>
{% endblock %}
{% block last %}
{{ block.super }}
<p>这是我自己的结尾内容,不是继承来的</p>
{% endblock %}
<p>这是index_1中没有block包括的内容</p>

查看结果:

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

Django——4 模板标签 模板的继承与引用的更多相关文章

  1. django自定义过滤器及模板标签

    创建一个模板库 不管是写自定义标签还是过滤器,第一件要做的事是创建模板库(Django能够导入的基本结构). 创建一个模板库分两步走: 第一,决定模板库应该放在哪个Django应用下. 如果你通过 m ...

  2. Django框架(十一):模板介绍、模板语言、模板继承、HTML转义

    1. 模板介绍 1.1 模板的功能 产生html,控制页面上展示的内容.模板文件不仅仅是一个html文件. 模板文件包含两部分内容: 静态内容:css.js.html. 动态内容:用于动态去产生一些页 ...

  3. Django学习系列之模板

    什么是django模板 模板是一个文本,用于分离文档的表现形式和内容,模板定义了占位符以及各种用于规范文档该如何显示的各部分基本逻辑(模板标签) 模板通常用于产生HTML 如何使用模板 创建一个Tem ...

  4. python的Web框架,Django模板标签及模板的继承

    模板标签 在传递数据的时候,会有大量的数据展示在浏览器上,而数据会是动态变化的,在html的编写中,数据也是需要动态的,而不能是写死的,如果动态展示呢. 给定的例子数据 views传递数据给html ...

  5. Django项目中模板标签及模板的继承与引用【网站中快速布置广告】

    Django项目中模板标签及模板的继承与引用 常见模板标签 {% static %} {% for x in range(x) %}{% endfor %} 循环的序号{% forloop %} 循环 ...

  6. Django 04 模板标签(if、for、url、with、autoeacape、模板继承于引用、静态文件加载)

    Django 04 模板标签(if.for.url.with.autoeacape.模板继承于引用.静态文件加载) 一.if.for.url.with.autoescape urlpatterns = ...

  7. Django入门--模板标签、继承与引用

    一.模板标签 Django模板引擎提供的可以在模板中进行的各种逻辑操作,是函数调用的一种特殊形式,如循环.判断等功能,期语法规则为: {% tag %} content {% tag 参数1 参数2 ...

  8. Django(十五)模板详解:模板标签、过滤器、模板注释、模板继承、html转义

    一.模板的基础配置及使用 [参考]https://docs.djangoproject.com/zh-hans/3.0/topics/templates/ 作为Web框架,Django提供了模板,用于 ...

  9. 潭州课堂25班:Ph201805201 django框架 第四课 模板常用标签,模板继承与引用,自定义过渡器 (课堂笔记)

    if 语句 判断传入的 name 值 建好这些文件后,对 url 进行配置 在浏览器中访问 for 循环 页面跳转: 通过  name 跳转时要在 urls 文件中为该 path 设置 name 带参 ...

随机推荐

  1. ALSA声卡驱动中的DAPM详解之七:dapm事件机制(dapm event)

    前面的六篇文章,我们已经讨论了dapm关于动态电源管理的有关知识,包括widget的创建和初始化,widget之间的连接以及widget的上下电顺序等等.本章我们准备讨论dapm框架中的另一个机制:事 ...

  2. css list menu

    选择让page和folder都显示出来

  3. system.web section group下的section

    private Configuration _configuration; private ConfigurationSectionGroupCollection sectionGroups; pri ...

  4. 关于OpenFileDialog的使用 2(转)

    关于OpenFileDialog的使用 (2010-03-25 12:51:33) 标签: 杂谈 分类: WinForm 1. OpenFileDialog控件有以下基本属性 InitialDirec ...

  5. 71.Ext.form.ComboBox 完整属性

    转自:https://blog.csdn.net/taotaoqi/article/details/7409514 Ext.form.ComboBox 类全称: Ext.form.ComboBox 继 ...

  6. jquery中对于为一组标签赋予点击事件

    可以用each,但是each不能对动态的元素进行事件的绑定, 不过,其实也很简单,只需要获取所有的标签集,然后用动态绑定的方法,比如live进行绑定就可以了. 有时候,其实不难,只是自己想的太过复杂. ...

  7. DB2锁表或超时解决方案

    DB2锁表或超时 一.场景 对数据表进行更新(查询没问题),错误提示如下: SQLCODE=-911, SQLSTATE=40001, DRIVER=3.63.75SQL0911N The curre ...

  8. 利用hexo来配合nginx来打造属于自己的纯静态博客系统

    什么是静态网站生成器?顾名思义,就是以最快的速度生成一个高可用的web页面,我们知道Django作为一款非常流行的框架被广泛应用,但是部署起来实在是太麻烦了,各种命令各种配置,动态页面必然要涉及数据库 ...

  9. Set-----集合入门

    函数中的集合和  数学中的集合 基本上差不多 集合中每个元素最多只能出现一次  并且 当元素储存到set集合之中 会自动 按照 ascll 进行  从小到大的  排序 大神关于   set   的 详 ...

  10. 判断IOS静态库(.a文件)是否支持模拟器和真机运行

    判断IOS静态库(.a文件)是否支持模拟器和真机运行 在mac终端下,进入到.a文件目录下,然后输入: lipo -info libMyAlertView.a Architectures in the ...