django模板语法

模板

1.定义:使用模板语法的html文件
模板语法变量 {{ a }}
调用 render(request,“index.html”,
{
“a”:name }
在views中 的视图函数中调用,使用字典的形式传值,把name的值传给模板中的{{ a }}
2.循环
{% for day in day_list %} 开始循环

{{ day }}


{{ endfor }} 结束循环
循环字典{% for k,v in d.items %}

{{ k }},{{ v}}

k字典的键,v 字典的值
{% endfor %}
3.判断
复制代码

{% if i > 300 %}

{{ i }}大于300


{% elif i == 300 %}

{{ i }}等于

{% else % }

{{ i }}小于300

{% endif %} 3.srf_token:这个标签用于跨站请求伪造保护 在提交出现forbbiddon的错误时候可以在表单下添加{% csrf_token %} 4.过滤器:{{ value|length }} 获取变量的长度 {{ value|filesizeformat }} 将值格式化为文件尺寸 (例如 '13 KB', '4.1 MB', '102 bytes', 等等) {{ value|slice:"2:-1" }} 切片 {{ content|truncatewords:4 }} 截断单词(truncatechars截断字符串)

自定义标签和过滤器

  1. 注册app,在settings.py中添加app的名字
  2. 在app下新建一个包,名字必须是templatetags
  3. 在templatetags包下新建py文件,文件放入自定义标签和过滤器,格式`from django import template
    from django.utils.safestring import mark_safe
    #自定义模板标签和过滤器,需要现在settings中的INSTALLED_APPS添加app,需要在app先新建模块,模块名必须是templatetags

#在使用自定义标签和过滤器的html页面中需要先加载 {% load my_tag %}
register = template.Library() # register的名字是固定的,不可改变

@register.filter #过滤器
def multi(x,y):
return x**y

@register.simple_tag #标签
def my_input(id,arg):
result = “” % (id, arg,)
return mark_safe(result)`

4.加载自定义文件,在要使用自定义过滤器的html模板中添加{% load my_tag %} my_tag 是自定义过滤器所在的py文件名字
5.调用:{{ i|multi:2 }} i 和2都是multi的传入参数

模板继承(减少代码冗余)

语法:元模板中定义一个块{% block classinfo %}
{% endblock %}
在使用 的html文件中的第一行加入{% extends “base.html” %} "base.html"是元模版的文件名字
2.继承元模板中的块 {% block classinfo %}
{% endblock classinfo %} 在end中可以不添加块名,添加可增加阅读性
3.在继承的时候,当元模块中有内容,不扩展,就出现默认内容,有扩展就覆盖默认内容,使用{% bolock.super %} 可以获取到默认内容,与python中的super()类似 {% block classinfo %}
{{ block.super }}

实现追加效果

{% endblock classinfo %} 通过super在获取到默认内容后,在扩展就达到了追加的效果

你可能感兴趣的:(django模板语法)