Django的模板系统

Posted glh-ty

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django的模板系统相关的知识,希望对你有一定的参考价值。

Django模板中只有两种特殊符号:

{{  }}和 {% %}

{{ }}表示变量,在模板渲染的时候替换成值,{% %}表示逻辑相关的操作。

变量{{ }}

{{ 变量名 }}

变量名由字母数字和下划线组成。

点(.)在模板语言中有特殊的含义,用来获取对象的相应属性值。

from django.shortcuts import render

# Create your views here.


def test(request):
    name = "goulonghui"
    age = 18
    t_lst = ["111", 222, 333]
    t_dic = {"name": "glh", "age": 18, "hobby_lst": ["妹子1", "妹子2", "妹子3"]}

    return render(request, test.html, {
        "name": name,
        "age": age,
        "t_lst": t_lst,
        "t_dic": t_dic
    })
技术分享图片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>{{ name }}</p>
<p>{{ age }}</p>
<p>{{ t_lst }}</p>
<p>{{ t_lst.0 }}</p>
<p>{{ t_lst.1 }}</p>

<ul>
    {% for foo in t_lst %}
        <li>{{ foo }}</li>
    {% endfor %}
</ul>

<hr>
<p>{{ t_dic }}</p>
<p>{{ t_dic.name }}</p>
<p>{{ t_dic.hobby_lst }}</p>
<p>{{ t_dic.hobby_lst.0 }}</p>
<hr>
<ul>
    {% for foo in t_dic %}
        <li>{{ foo }}</li>
    {% endfor %}
</ul>
<hr>
<ul>
    {% for foo in t_dic.keys %}
        <li>{{ foo }}</li>
    {% endfor %}
</ul>
<hr>
<ul>
    {% for foo in t_dic.values %}
        <li>{{ foo }}</li>
    {% endfor %}
</ul>
<hr>
<ul>
    {% for foo in t_dic.items %}
        <li>{{ foo }}</li>
    {% endfor %}
</ul>
<hr>
<ul>
    {% for foo in t_dic.items %}
        <li>{{ foo.0 }}</li>
    {% endfor %}
</ul>
<hr>
<ul>
    {% for foo in t_dic.items %}
        <li>{{ foo.1}}</li>
    {% endfor %}
</ul>


</body>
</html>
test.html

技术分享图片

注:当模板系统遇到一个(.)时,会按照如下的顺序去查询:

  1. 在字典中查询
  2. 属性或者方法
  3. 数字索引

Filters

翻译为过滤器,用来修改变量的显示结果。

语法: {{ value|filter_name:参数 }}

‘|‘左右没有空格

default  

{{ value|default:"nothing"}}

如果value值没传的话就显示nothing

注:TEMPLATES的OPTIONS可以增加一个选项:string_if_invalid:‘找不到‘,可以替代default的的作用。

以上是关于Django的模板系统的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 片段在 Django 模板中不起作用

如何在扩展另一个文件的 django 模板中使用带有动态内容的 html 块片段?

Django模板过滤器 - 一行

Django的模板系统

Django的模板系统

如何在Django视图中使用for循环返回每次迭代[关闭]