Django--知识补充
自定义标签或过滤器
渲染变量的方法(过滤器:修改数据或格式转换)
{{ var | add }}
{{ var | date:"Y-m" }}
{{ var | safe }}
渲染标签的方法
{% tag_name %}
{% for %}……{% endfor %}
{% csrf_token %}
自定义
需要在应用目录下创建templatetags的包
然后在里面创建Python脚本。
自定义过滤器
参数必须是两个
from django import template
# 实例化的名字必须是register
register = template.Library()
@register.filter
def func_filter(var1,var2):
……
return ……
# 使用时:
{{ var | func_filter:1 }}
自定义标签
无参数限制
@register.simple_tag
def func_tag(var1,var2):
……
return ……
# 使用方法
{% func_tag var 2 %}
加载自定义的
#在HTML文件开头写上
{% load my_tags %}
使用include引用
在页面中有独立固定模块时使用。
在template目录下创建include_demo.html,不需要HTML的结构,在其中直接定义标签和内容。
引用时使用 {% include 'include_demo.html' %}
extend时变量获取问题
views里写一个函数用来拿这些变量,供别的函数调用。会导致数据和样式脱离。
把固定部分且有变量的拆成一个单独的模块。
在需要引用的页面中直接include引入模块还是拿不到变量。
使用自定义可引用标签解决
在templatetags里的自定义tag脚本里写
@register.inclusion_tag("blog/menu.html")
def get_menu(user):
……
return {……}
在渲染标签前线执行函数,拿到返回字典传给引入的模块。
前段使用它 {% get_menu user %}
view函数在返回时都要返回一个user变量供标签使用。
———————————————————
天行健,君子以自强不息。
地势坤,君子以厚德载物。
天行健,君子以自强不息。
地势坤,君子以厚德载物。