Python学习第123天(Django回头看:模板控制语句、filter、simple_tag)
2021-04-25 11:29
标签:val 显示 reverse imp eve code set 后端 提示 紧接着昨天的内容,今天我们来说说模板语句的内容,关于模板语句,核心就是{ % 语句 % } 先说一下if else的使用 { % if 判定语句 % } { % endif % } 如果判定结果为true,则会执行其判定语句之后的html标签内容: 例子: num大于200 num大于100小于200 num小于100 num等于100 总的来说,和我们Python中的if else完全相同 下面是for循环 { % for % } { % endfor % } 每次循环模板系统都会渲染{% for %}和{% endfor %}之间的所有内容 例子: {{ forloop.counter }}: {{ item }} 其中涉及到empty,如果该循环为空,则empty下面的html标签进行执行,多用于提示搜索为空,我们制定搜索的过程中,往往反馈一个列表,我们通过遍历裂变,但部分时候也可能搜索结果为空,此时就可以通过empty进行反馈 而forloop.counter和 foeloop.revcounter则可以显示在模板语言中被隐藏掉的序号,后面加上0就是包括0的情况,不写则从1开始计算 forloop.first则用于给第一个特殊标识,比如遍历文章,给题目一个特殊的标识 csrf_token标签:这个标签很重要,保证了我们反馈的信息内容路劲是反馈给我们文件的信息路径 在form标签内增加{%csrf_token%} 该标签可以生成特殊识别代码,只有保证与后端第一次反馈过去的标签一致,才能接收到所提供的的数据,以保证数据不会被提交至其他的位置。 例子 {% with %}:用更简单的变量名替代复杂的变量名 不多说,很方便,减少你写的长度: {% with total=fhjsaldfhjsdfhlasdfhljsdal %} {{ total }} {% endwith %} {% verbatim %}: 禁止render 是这部分不被渲染,正常显示大括号 下面就到了关键部分了,自定义filter和simple_tag filter是单个参数的函数,而simple_tag则可以使用多个参数,但是前者需要{ 参数|函数:参数 }的方式,simple_tag不需要,其使用{ { 函数名 参数1 参数2 参数3.。。 } }参数之间通过逗号分开 使用方法: 1、在app中创建templatetags模块(必须的) 2、创建任意 .py 文件,如:my_tags.py 该文件前端有固定格式 3、在使用自定义simple_tag和filter的html文件中导入之前创建的 my_tags.py :{% load my_tags %} 4、使用simple_tag和filter(如何调用) 5、在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag. 特别注意:filter可以用在if等语句后,simple_tag不可以 以上为今日内容,复习完毕。切记在settings中的INSTALLED_APPS配置当前app Python学习第123天(Django回头看:模板控制语句、filter、simple_tag) 标签:val 显示 reverse imp eve code set 后端 提示 原文地址:https://www.cnblogs.com/xiaoyaotx/p/13258325.html{% if num >= 100 and 8 %}
{% if num > 200 %}
{% for obj in list %}
#在标签里添加reversed来反序循环列表:
{% for obj in list reversed %}
...
{% endfor %}
#{% for %}标签可以嵌套:
{% for country in countries %}
{{ country.name }}
{% for city in country.city_list %}
{% endfor %}
#系统不支持中断循环,系统也不支持continue语句,{% for %}标签内置了一个forloop模板变量,
#这个变量含有一些属性可以提供给你一些关于循环的信息
1,forloop.counter表示循环的次数,它从1开始计数,第一次循环设为1:
{% for item in todo_list %}
{% verbatim %}
{{ hello }}
{% endverbatim %}
from django import template
from django.utils.safestring import mark_safe
register = template.Library()
@register.filter 以上为固定格式
def filter_multi(v1,v2):
return v1 * v2
@register.simple_tag
def simple_tag_multi(v1,v2):
return v1 * v2
@register.simple_tag
def my_input(id,arg):
result = "" %(id,arg,)
return mark_safe(result)
-------------------------------.html
{% load xxx %} #首行
# num=12
{{ num|filter_multi:2 }} #24
{{ num|filter_multi:"[22,333,4444]" }}
{% simple_tag_multi 2 5 %} 参数不限,但不能放在if for语句中
{% simple_tag_multi num 5 %}
{% if num|filter_multi:30 > 100 %}
{{ num|filter_multi:30 }}
{% endif %}
文章标题:Python学习第123天(Django回头看:模板控制语句、filter、simple_tag)
文章链接:http://soscw.com/index.php/essay/79375.html