Django-模板语法+反向解析url

1. 模板变量

变量名必须由字母、数字、下划线(不能如下划线开头)和点组成,语法以下:php

{{ 变量 }}

模板变量可使python的内建类型,也能够是对象。html

def index(request): context = { 'name': 'django', 'my_list': ['python', 'java', 'php', 'c/c++'], 'my_dict': { 'name': 'python', 'age': 20, 'gender': '男', } } return render(request, 'index.html', context) 
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>{{ name }}</h1> <h1>{{ my_list }}</h1> <h1>{{ my_list.0 }}</h1> <!-- 注意列表的取值方法 --> <h1>{{ my_dict }}</h1> <h1>{{ my_dict.name }}</h1> <!-- 注意字典的取值方法 --> </body> </html> 

2. 模板语句

1)for循环:java

{% for item in 列表 %}
    {{forloop.counter}}  <1-- 表示当前是第几回循环,从1开始 -->
    {{forloop.counter0}}  <!-- 表示当前是第几回循环,从0开始 -->
{% empty %} 
    列表为空或不存在时执行此逻辑
{% endfor %}

2)if条件:python

{% if ... %} 逻辑1 {% elif ... %} 逻辑2 {% else %} 逻辑3 {% endif %} 

比较运算符以下:c++

==
!=
<
>
<=
>=

布尔运算符以下:数据库

and or not 

注意:运算符左右两侧必须有空格。django

{% if a == 1 %} # 正确 {% if a==1 %} # 错误

with

使用一个简单地名字缓存一个复杂的变量,当你须要使用一个“昂贵的”方法(好比访问数据库)不少次的时候是很是有用的缓存

例如:oop

{% with total=business.employees.count %}
    {{ total }} employee{{ total|pluralize }}
{% endwith %}
 

3. 过滤器

语法以下:ui

  • 使用管道符号|来应用过滤器,用于进行计算、转换操做,可使用在变量、标签中。
  • 若是过滤器须要参数,则使用冒号:传递参数。

    变量|过滤器:参数

列举几个以下:

  • safe,禁用html转义(显示html标签样式,而不是字符串)
  • length,长度,返回字符串包含字符的个数,或列表、元组、字典的元素个数。
  • default,默认值,若是变量不存在时则返回默认值。

    data|default:'默认值' 
  • date,日期,用于对日期类型的值进行字符串格式化,经常使用的格式化字符以下:

    • Y表示年,格式为4位,y表示两位的年。
    • m表示月,格式为01,02,12等。
    • d表示日, 格式为01,02等。
    • j表示日,格式为1,2等。
    • H表示时,24进制,h表示12进制的时。
    • i表示分,为0-59。
    • s表示秒,为0-59。
    value|date:"Y年m月j日  H时i分s秒"
  • Django模板--->http://python.usyiyi.cn/translate/django_182/ref/templates/builtins.html#ref-templates-builtins-tags

4. 注释

1)单行注释语法以下:

{#...#} 

2)多行注释使用comment标签,语法以下:

{% comment %}
...
{% endcomment %}

5. 模板继承

  • 模板继承和类的继承含义是同样的
  • 可使用模板继承来复用父模板,提升代码的复用性,减轻开发人员的工做量。
  • 能够经过定义 block ,实现子模板对父模块内容的重写

父模板

若是发如今多个模板中某些内容相同,那就可使用block标签把这段内容定义到父模板中。

{% block 块名称 %}
    预留区域,能够编写默认内容,也能够没有默认内容
{% endblock %}

子模板

  1. 使用extends标签继承父模板,写在子模板文件的第一行。

    {% extends "父模板路径" %} 
  2. 对有须要的block进行重写:

    • 不用重写父模版中的全部block,若是子模版没有重写,则使用父模版定义的默认值。
    • 可使用 block.super 来包含父模板的块中定义的内容,以下

      {% block 名称 %}
            子模板的内容
            {{ block.super }}    显示父模板中block的内容
        {% endblock %}
相关文章
相关标签/搜索