Python3 --- Django创建模板

一、模板介绍

        模板是一个文本,用于分离文档的表现形式和内容。 模板定义了占位符以及各种用于规范文档该如何显示的各部分基本逻辑(模板标签)。 模板通常用于产生HTML,但是Django的模板也能产生任何基于文本格式的文档。

创建文件夹:在应用中创建templates文件夹

创建文件:在templates文件夹中创建页面文件


模板语言包含如下内容:

  • 变量
  • 标签
  • 过滤器
  • 注释


二、变量

语法:{ {variable}}

注意事项:

  • 当模版引擎遇到一个变量,将计算这个变量,然后将结果输出
  • 变量名必须由字母、数字、下划线(不能以下划线开头)和点组成
  • 当模版引擎遇到点("."),会按照下列顺序查询:
    • 字典查询,例如:foo["bar"]
    • 属性或方法查询,例如:foo.bar
    • 数字索引查询,例如:foo[bar]
  • 如果变量不存在, 模版系统将插入'' (空字符串)
  • 在模板中调用方法时不能传递参数

例如:

{ {hero.showName}}


三、标签(标签和过滤器官方文档

3.1、autoescape

控制当前的自动转义行为,此标记采用on或者off作为参数,并确定自动转义是否在块内有效。该块以endautoescape结束标签关闭。

{% autoescape on %}
    {
 { body }}
{% endautoescape %}

3.2、block

定义可以被子模板覆盖的块,为模板继承时使用

示例:

base.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    {% block head %}
    {% endblock %}
</head>
<body>
<h1>logo</h1>
<hr>
{% block content%}
    <h1>abc</h1>
{% endblock %}
<hr>
<h1>contact</h1>
</body>
</html>

index.html继承base.html

{% extends 'booktest/base.html' %}
{% block content %}
<h1>123</h1>
{% endblock content %}


3.3、comment

注释,{% comment %} 和 {% endcomment %}之间的内容被解释为注释

3.4、crsf_token

一个防止CSRF攻击(跨站点请求伪造)的标签

3.5、cycle

多次循环迭代,给定的值,每次遇到此标签就会生成一个参数对应第一个,如此类推,如循环完没有参数了则继续从头开始循环。

<ul>
    <li>{% cycle 'one' 'two' 'three' 'four' as infocycle %}</li>
    <li>{% cycle infocycle %}</li>
    <li>{% cycle infocycle %}</li>
    <li>{% cycle infocycle %}</li>
    <li>{% cycle infocycle %}</li>
    <li>{% cycle infocycle %}</li>
    <li>{% cycle infocycle %}</li>
</ul>

3.6、debug

输出整个调试信息,包括当前上下文和导入的模块。

3.7、extends

表示该模板扩展了父模板,这个标签有两种使用方式:

  • "base.html"作为父模板的名称来扩展

{% extends "base.html" %}

  • 使用的变量variable。如果变量的计算结果为字符串,Django将使用该字符串作为父模板的名称。如果变量评估为一个Template对象,Django将使用该对象作为父模板。

{% extends variable %}
3.8、filter

通过一个或多个过滤器对内容过滤。 作为灵活可变的语法,多个过滤器被管道符号相连接,且过滤器可以有参数。
注意块中所有的内容都应该包括在filter 和endfilter 标签中。

{% filter force_escape|lower %}
    ...
{% endfilter %}

3.9、firstof

输出第一个值不等于False的变量

{% firstof var1 var2 var3 %}

如果所有传递的变量都是False,还可以使用文字字符串作为返回值

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

3.10、for

循环输出数组中的每个项目,使项目在上下文变量中可用。

循环列表的值:

<ul>
{% for item in list %}
    <li>{
 { item }}</li>
{% endfor %}
</ul>

可以使用reversed反向循环列表:

<ul>
{% for item in list reversed %}
    <li>{
 { item }}</li>
{% endfor %}
</ul>
列表可以使用嵌套循环:

<ul>
{% for x in list %}
{% for y in x %}
    <li>{
 { y }}</li>
{% endfor %}
{% endfor %}
</ul>
字典循环,可以使用items方法得到字典的建和值:

<ul>
{% for k,v in row.items %}
    <li>{
 { k }}={
 { v }}</li>
{% endfor %}
</ul>
for循环再循环中设置的变量:
  • forloop.counter --- 循环的当前迭代索引从1开始计数
  • forloop.counter0 --- 循环当前迭代的索引从0开始计数
  • forloop.revcounter --- 循环结束时的迭代次数(1索引)
  • forloop.revcounter0 --- 循环结束时的迭代次数(0索引)
  • forloop.first --- 如果这是通过循环的第一次,则为真
  • forloop.last --- 如果这是通过循环的最后一次,则为真
  • forloop.parentloop --- 对于嵌套循环,这是围绕当前循环的循环

<body>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值