django-模板相关

{{ }} 变量 {% %} tag 逻辑相关

render(request,'xx.html',{'k1':v1})

{{ k1 }} {{ request }}

1 .取值
.索引 key 属性 方法
优先级: key > 属性 方法 > 索引

2 过滤器
{{ 变量|过滤器 }} {{ 变量|过滤器:参数 }}
default:'默认值' 不存在为空使用
date:'Y-m-d H:i:s' 转换时间
safe

3 标签
{% for i in list %}
{{ i }} {{ forloop.counter }}
{% endfor %}

{% if 条件 %} 不支持算法运算 不支持连续判断
{% elif %}
{% else %}
{% endif %}

{% csrf_token %} 一个隐藏的input的标签 name='csrfmiddlewaretoken' 64长度

4 静态文件配置
{% load static %}
{% static '静态文件的相对路径' %}

5 模板和继承
母版:
1 提取多个页面的公共部分 ->html文件种 base.html
2 在html页面种定义钩子 block
继承:
1 {% extends 'base.html' %}
2 重写block快
注意点:
1 {% extends 'base.html' %}写在第一行
2 {% extends 'base.html' %} 'base.html'带引号
3 要显示的内容写到block中
4 多定义block快 css js

6 组件 include
一小段html代码段 nav.html
{% include 'nav.html' %}

7 3个自定义的方法
filter simple inclusion_tag
步骤:
1 在app下创建一个templatetags的包
2 在包下创建py文件 my_tags.py
3 在py文件写
from django.template import Library
register = Library()
4 写函数+加装饰器
@register.filter
def addxx_filter(value,arg): # 过滤器最多2个参数
return 任意值

@register.simple
def addxx_simple(*args,**kwargs):
return 任意值

@register.inclusion_tag("模板文件名")
def show_li(num):
return {'num':range(1,num+1)}

写模板
{% for i in num %}
{{ i }}
{% endfor%}
5 使用
{% load my_tags %}
{{ 'xx'|addxx_filter:'11' }} -任意值 if 变量|addxx_filter

{% addxx_simple 'xx' '11' k1=v1%}

{% show_li 3 %} 1 2 3 的结果

posted @ 2020-08-17 15:37  李淳罡zZ  阅读(80)  评论(0)    收藏  举报