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)的主要内容,如果未能解决你的问题,请参考以下文章