Django4 模板(template)

Posted

tags:

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

定义模板

变量{{变量名}}

def func(request):
    return render(request, "html模板", {"current_user": "alex"})
<html>
<body>
    <div>{{ current_user }}</div>
</body>
</html>

条件判断 {% if 条件 %}{% else %}{% endif %}

def func(request):
       return render(request, "html模板路径", {"current_user": "alex", "user_list": ["alex", "eric"],"age": 18})
{% if age %}
   <a>有年龄</a>
   {% if age > 16 %}
       <a>老男人</a>
   {% else %}
       <a>小鲜肉</a>
   {% endif %}
{% else %}
   <a>无年龄</a>
{% endif %}

for循环 {% for item in user_list %}{% endif %}

def func(request):
       return render(request, "html模板路径", {"current_user": "alex", "user_list": ["alex", "eric"]})
<html>
<body>
    <div>{{ current_user }}</div>
    <ul>
        {% for row in user_list%}
        <li>{{ row }}</li>
        {% endfor %}
    </ul>
</body>
</html>

列表的复杂循环

USER_LIST = [
    {"name": "root1"},
    {"name": "root2"},
    {"name": "root3"},
]
 
def index(request):
    return render(request, "index.html", {"user_list": USER_LIST})
<ul>
    {% for item in user_list %}
    <li>{{ item.name }}</li>
    {% endfor %}
</ul>

字典的复杂循环

USER_DICT = {
    "1": {"name": "root1", "email": "[email protected]"},
    "2": {"name": "root2", "email": "[email protected]"},
    "3": {"name": "root3", "email": "[email protected]"},
    "4": {"name": "root4", "email": "[email protected]"},
    "5": {"name": "root5", "email": "[email protected]"},
}
 
def index(request):
    return render(request, "index.html", {"user_dict": USER_DICT})
<ul>
    {% for k in user_dict.keys %}
        <li>{{ k }}</li>
    {% endfor %}
</ul>
<ul>
    {% for val in user_dict.values %}
        <li>{{ val }}</li>
    {% endfor %}
</ul>
<ul>
    {% for k, val in user_dict.items %}
        <li>{{ k }}-{{ val }}</li>
    {% endfor %}
</ul>

 


模板继承

模板继承只能继承一个模板

父模板

{% block 模板名称 %}{% endblock %}

子模板

{% extends "父模板名称.html" %}
{% block content %}
 内容
{% endblock %}

导入css、js可以在每个最下面加入

{% block css %}{% endblock %}
{% block js %}{% endblock %}

 


模板导入

导入其他模板,可以导入多个

{% include "要导入的模板名称.html" %}

 


django自带的一些模板功能

forloop.counter    # for循环的序号
forloop.first      # for循环第一个
forloop.last       # for循环最后一个

{{ item.event_start|date:"Y-m-d H:i:s" }}
{{ bio|truncatewords:"30" }}
{{ my_list|first|upper }}
{{ name|lower }}

 


自定义simple_tag、filter

在app下建立templatetags目录

在目录中建立任意py文件

写函数,xxoo.py,如果return的时候有html标签要使用 return mark_safe(ret)

from django import template
from django.utils.safestring import mark_safe
 
register = template.Library()
 
# 自定义simple_tag
@register.simple_tag
def houyafan(a1, a2, a3):
    return mark_safe(a1 + a2 + a3)
 
# 自定义filter
@register.filter
def jiajingze(a1, a2):
    return mark_safe(a1 + a2)

注册app

模板中使用

<!--顶部引入py文件名-->
{% load xxoo %}
 
<!--使用自定义simple_tag 函数名 参数1 参数2 参数3-->
{% houyafan 2 5 6 %}
 
<!--使用自定义filter 参数1|函数名:参数2-->
{{ "maliya"|jiajingze:"LS" }}

自定义simple_tag和自定义filter的优缺点

simple_tag可以传任意个参数,filter只能传两个参数

simple_tag不可以在if判断中使用,filter可以在if判断中使用

{% if "maliya"|jiajingze:"LS" %}{% endif %}

simple_tag传参的时候参数与参数间可以有空格,filter传参数的时候:后面不能有空格

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

Django4 模板(template)

Django4.2_templates之各种标签的用法讲解

7-微信小程序 模板(template)

vscode代码片段生成vue模板

Xcode中的变量模板(variable template)的用法

微信小程序开发--模板(template)使用,数据加载,点击交互