<<<代码布局(自定义的代码放哪里)>>>
(1)某个app特有的
1.一般放app目录下 固定名为templatetags 的python文件夹里鸭,如果是别的名称,django是找不到的哦!
(1)某个app特有的
1.一般放app目录下 固定名为templatetags 的python文件夹里鸭,如果是别的名称,django是找不到的哦!
![](https://img2018.cnblogs.com/blog/1606051/201903/1606051-20190320201857732-807087191.png)
2.再在文件夹里面写模块
(2)创建新的app,在里面加模块(**注意要注册app鸭!!!**)
<<<自定义模板过滤器>>>
首先创建模块,模块名固定为 customer_filters.py,如果是别的名字,运行会报错哦!!
首先创建模块,模块名固定为 customer_filters.py,如果是别的名字,运行会报错哦!!
![](https://img2018.cnblogs.com/blog/1606051/201903/1606051-20190320194237340-740407940.png)
(1)模板过滤器(其实就是函数啦!)
1.有一个或两个参数
第一个参数是 模板变量
第二个参数是普通参数,也可以不要
(2)注册
1.通过django.template.Library 它的实例的filter方法
filter有两个参数
name: 过滤器的名称,是一个字符串(如果不写name,函数名就是默认的filter名字哦!)
filter_func:函数名
1.通过django.template.Library 它的实例的filter方法
filter有两个参数
name: 过滤器的名称,是一个字符串(如果不写name,函数名就是默认的filter名字哦!)
filter_func:函数名
register = Library()
register.filter(<function>)
register.filter(<function>)
2.通过装饰器
from django.template import Library register = Library() @register.filter() def myfilter(value): ...
在模板中使用
![](https://img2018.cnblogs.com/blog/1606051/201903/1606051-20190320193946464-292733931.png)
<<<自定义模板标签>>>
(1)简单标签(本质也是函数):
django.template.Library.simple_tag()
(1)简单标签(本质也是函数):
django.template.Library.simple_tag()
(2)创建:
1.创建python模块,模块名固定为customer_tags.py,如果不是这个名字,也是会报错,真jer挑剔!!
1.创建python模块,模块名固定为customer_tags.py,如果不是这个名字,也是会报错,真jer挑剔!!
![](https://img2018.cnblogs.com/blog/1606051/201903/1606051-20190320201715618-1622925540.png)
2.注册
@filter.simple_tag(name=<function>)
from django.template import Library register = Library() @register.simple_tag() def tag(): ...
**如果要拿到视图函数里面的context,则自定义标签函数的第一个参数是context
其次让simple_tag函数中的take_context=True
**
(3)使用:同样也要load
![](https://img2018.cnblogs.com/blog/1606051/201903/1606051-20190320201750705-1023314527.png)
(4)inclusion标签:
通过渲染另一个模板来展示数据
这里用inclusion_tag(‘模板的路径’)来装饰
通过渲染另一个模板来展示数据
这里用inclusion_tag(‘模板的路径’)来装饰
**这个标签也可以拿到context,方法和simple_tag 一样**