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变量供标签使用。

posted @ 2018-03-13 18:31  jinyudong  阅读(124)  评论(0编辑  收藏  举报