我们已经知道django会对模板页面进行渲染,我们可以在模板中添加django的语言,就像前面所讲的循环、导入,在这里还有下面的几种用法:
父模板:{% block title %}{% endblock %}
子模板:{% extends "children.html" %}
{% block title %}{% endblock %}
其他方法:
{{ item.event_start|date:"Y-m-d H:i:s"}}
{{ name|my_fiter:"e1yu" }}
{{ my_list|first|upper }}
{{ name | lower }} {# name转换为小写 #}
那么我觉得这些用法太少了,我想自定义怎么办,django为我们提供了解决办法,就是自定义函数simple_tag,我们来看一些具体的做法。
首先在Django的APP目录下创建一个文件夹templatetags,名字固定尽量不要修改名字,接着就可以在templatetags文件夹下就可以创建任意的py文件,在py(tag.py)文件中我们可以写自定义函数:
from django import template
from django.utils.safestring import mark_safe
register = template.Library() #创建一个template对象,名字为register,不可更改
@register.simple_tag
def my_simple(v1,v2):
return v1 + v2
我们可以对函数做修改,但是不要更改其他的地方,那么这样我们就定义好了自己的函数,接下来是如何使用?记得在settings.py中注册app,然后在需要使用的模板页面中添加下面的代码:
{% load tag %} {# 添加在页面的顶部 文件名#}
{% my_simple 1 2 %} {# 使用方法 函数名 参数 #}
这样就简单的实现了自定义的函数,django可以识别我们的函数,需要注意有些地方都是固定的名字,随意修改可能会报错。那么我们再来看一下上面的{{ name|my_fiter:"e1yu" }}
这种该如何定义呢?我们只需要简单的修改一下啊装饰器的名字就可以了:
from django import template
from django.utils.safestring import mark_safe
register = template.Library() #创建一个template对象,名字为register,不可更改
@register.filter
def my_filter(a1,a2):
return a1+a2
{# 模板中的使用 函数只能接收两个参数 #}
{% load tag %} {# 添加在页面的顶部 文件名#}
{{ "Next"|my_fiter:"E1yu" }} {{ 参数1|函数名:"参数2" }}
自定义filter的用法比较严格,如果在模板中使用的时候多一个空格都会报错,函数也只能接收Next和E1yu两个参数,但是他可以作为if条件判断,而我们的simple_tag不能。
声明:1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!