首页 > 其他 > 详细

Django-模板语法

时间:2019-05-29 15:59:27      阅读:101      评论:0      收藏:0      [点我收藏+]

1. 模板变量

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

{{ 变量 }}

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

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循环:

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

2)if条件:

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

比较运算符如下:

==
!=
<
>
<=
>=

布尔运算符如下:

and
or
not

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

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

3. 过滤器

语法如下:

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

    变量|过滤器:参数
    

列举几个如下:

  • 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秒"
    

4. 注释

1)单行注释语法如下:

{#...#}

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

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

5. 模板继承

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

父模板

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

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

子模板

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

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

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

        {% block 名称 %}
            子模板的内容
            {{ block.super }}    显示父模板中block的内容
        {% endblock %}

Django-模板语法

原文:https://www.cnblogs.com/ls1997/p/10944206.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!