Django自定义模板标签和过滤器
1.创建模板库
在某个APP所在目录下新建包templatetags
,然后在其中创建存储标签或者过滤器的的模块,名称随意,例如myfilters.py
。
在这个模块中编写相关代码。
注意:templatetags
所在APP应该在配置文件中进行配置。
2.定义过滤器
过滤器是一个函数,第一个参数是被处理的值,之后,可以有任意个参数,作为过滤器参数。
from django import template
from django.template.defaultfilters import stringfilter
register=template.Library()
# 去除指定字符串
@register.filter(name='mycut')
@stringfilter
def mycut(value,arg):
return value.replace(arg,'')
# 注册过滤器
# register.filter(name='mycut',filter_func=mycut)
3.定义标签
simple_tag
处理数据,并返回具体数据
@register.simple_tag(name='posts_count')
def total_posts():
return Post.published.count()
inclusion_tag
处理数据,并返回一个渲染的模板
@register.inclusion_tag('blog/post/latest.html')
def show_latest_posts(count=5):
latest_posts=Post.published.order_by('-publish')[:5]
return {
'latest_posts':latest_posts,
}
blog/post/latest.html内容如下:
<strong>最新文章</strong>
<ul>
{% for post in latest_posts %}
<li>
<a href="{% url 'blog:post_detail' post_id=post.id %}">{{ post.title }}</a>
</li>
{% endfor %}
</ul>
4.使用
使用自定义的标签或过滤器之前,在模板文件中,需要使用 {% load 模块名称 %}
加载自定义的标签和过滤器。
之后,就可以向使用Django自带的标签一样使用了。
注意:即使当前模板继承的基模板中已经load了自定义标签或过滤器所在的模块,在当前模板中,依然需要再次load。
Django自定义模板标签和过滤器的更多相关文章
- Django 自定义模板标签和过滤器
1.创建一个模板库 使用模板过滤器的时候,直接把过滤器写在app里,例如:在app里新建一个templatetags的文件夹,这个目录应当和 models.py . views.py 等处于同一层次. ...
- django “如何”系列4:如何编写自定义模板标签和过滤器
django的模板系统自带了一系列的内建标签和过滤器,一般情况下可以满足你的要求,如果觉得需更精准的模板标签或者过滤器,你可以自己编写模板标签和过滤器,然后使用{% load %}标签使用他们. 代码 ...
- 模板继承and自定义模板标签和过滤器
自定义模板标签和 过滤器: 因为模板标签和过滤器只给我们提供了 这么多 无法对我们的使用造成更多的便利 ,剩下的就需要我们自己去创建新的 模板标签和过滤器了 1.在settings中的INSTALLE ...
- Django 自定义模版标签和过滤器
实现自定义过滤器 1. 创建register变量 在你的模块文件中,你必须首先创建一个全局register变量,它是用来注册你自定义标签和过滤器的, 你需要在你的python文件的开始处,插入几下代码 ...
- django特殊的标签和过滤器
国际化标签和过滤器 Django还提供了一些模板标签和过滤器,用以控制模板中国际化的每个方面.它们允许对翻译,格式化和时区转换进行粒度控制. 1. i18n 此标签允许在模板中指定可翻译文本.要启用它 ...
- python3之Django内置模板标签和过滤器
一.模板标签 内置标签: 1.autoescape 控制当前的自动转义行为,此标记采用on或者off作为参数,并确定自动转义是否在块内有效.该块以endautoescape结束标签关闭. views: ...
- django 内建标签和过滤器参考
下面的标签和过滤器参考就是为那些没有 admin 站点的可用的人准备的.由于 Django 是高度可定制的,你的 admin 里的关于标签和过滤器的参考可以认为是最可信的. 内建标签参考 block ...
- django自定义模板标签
# 创建自定义模板标签目录 django_project_name app_name templatetags (创建Python Packge,注意一定要用templatetags这个名字) my_ ...
- Django 自定义模板标签 报错django.template.exceptions.TemplateSyntaxError: '####' is not a registered tag library. Must be one of:
我写代码遇到这个错误,但是发现程序没有写错,好像是程序有缓存,重新运行几次就好了. 自定义模板标签,可以不用写views,url直接通过自定义函数把变量传给模板. 具体实现: 1.在app下新建Pyt ...
随机推荐
- docker安装tomcat并部署web项目
docker安装tomcat就不说了,网上一大把 启动tomcat: docker run --name tomcat -p 8080:8080 -v $PWD/test:/usr/local/tom ...
- ABP安装,应用及二次开发视频
CSDN课程:http://edu.csdn.net/lecturer/944
- 终于不再在懵逼mysql原生语句,orm超级登场
import sqlalchemy from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import cre ...
- 我的linux部署nginx步骤记录
http://www.runoob.com/linux/nginx-install-setup.html 安装prce找不到GCC c++文件 解决方法: yum install gcc-c++^C ...
- 编写一个简单的基于jmespath 的prometheus exporter
目的很简单,因为系统好多监控指标是通过json 暴露的,并不是标准的prometheus metrics 格式,处理方法 实际上很简单,我们可以基于jsonpath 解析json数据,转换为prome ...
- Django学习笔记之视图高级-错误处理
错误处理 在一些网站开发中.经常会需要捕获一些错误,然后将这些错误返回比较优美的界面,或者是将这个错误的请求做一些日志保存.那么我们本节就来讲讲如何实现. 常见的错误码 404:服务器没有指定的url ...
- docker nginx letsencrypt
https越来越流行了,但免费的证书一般是一年有效期.一般是够用了,但懒人都想一劳永逸, 有个免费证书颁发机构是letsencrypt.它是开源,并且完全免费的,它颁发的证书已经被几乎所有的浏览器所认 ...
- 如何编译luabind支持vs2010之后所有版本
步骤 下载https://github.com/luabind/luabind/tree/0.9. 其最后一次commit为 Revision: 8c66030818f0eacbb7356c16776 ...
- DevExpress Grid使用checkBox选中的方法
到官网得到消息自13.2版本后的Dev Grid中均内置了CheckBox列多选功能.在寻找答案的过程的成果进行记录. 一.13.2版本以后用法 启用多选列 对Gird中的View进行以下属性设置: ...
- MySQL常用命令(数据库,表相关的命令)
数据库相关命令 显示数据库列表 mysql> SHOW DATABASES; 创建数据库 mysql> CREATE DATABASE 库名; 如下,创建一个名为crashcours ...