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自定义模板标签和过滤器的更多相关文章

  1. Django 自定义模板标签和过滤器

    1.创建一个模板库 使用模板过滤器的时候,直接把过滤器写在app里,例如:在app里新建一个templatetags的文件夹,这个目录应当和 models.py . views.py 等处于同一层次. ...

  2. django “如何”系列4:如何编写自定义模板标签和过滤器

    django的模板系统自带了一系列的内建标签和过滤器,一般情况下可以满足你的要求,如果觉得需更精准的模板标签或者过滤器,你可以自己编写模板标签和过滤器,然后使用{% load %}标签使用他们. 代码 ...

  3. 模板继承and自定义模板标签和过滤器

    自定义模板标签和 过滤器: 因为模板标签和过滤器只给我们提供了 这么多 无法对我们的使用造成更多的便利 ,剩下的就需要我们自己去创建新的 模板标签和过滤器了 1.在settings中的INSTALLE ...

  4. Django 自定义模版标签和过滤器

    实现自定义过滤器 1. 创建register变量 在你的模块文件中,你必须首先创建一个全局register变量,它是用来注册你自定义标签和过滤器的, 你需要在你的python文件的开始处,插入几下代码 ...

  5. django特殊的标签和过滤器

    国际化标签和过滤器 Django还提供了一些模板标签和过滤器,用以控制模板中国际化的每个方面.它们允许对翻译,格式化和时区转换进行粒度控制. 1. i18n 此标签允许在模板中指定可翻译文本.要启用它 ...

  6. python3之Django内置模板标签和过滤器

    一.模板标签 内置标签: 1.autoescape 控制当前的自动转义行为,此标记采用on或者off作为参数,并确定自动转义是否在块内有效.该块以endautoescape结束标签关闭. views: ...

  7. django 内建标签和过滤器参考

    下面的标签和过滤器参考就是为那些没有 admin 站点的可用的人准备的.由于 Django 是高度可定制的,你的 admin 里的关于标签和过滤器的参考可以认为是最可信的. 内建标签参考 block ...

  8. django自定义模板标签

    # 创建自定义模板标签目录 django_project_name app_name templatetags (创建Python Packge,注意一定要用templatetags这个名字) my_ ...

  9. Django 自定义模板标签 报错django.template.exceptions.TemplateSyntaxError: '####' is not a registered tag library. Must be one of:

    我写代码遇到这个错误,但是发现程序没有写错,好像是程序有缓存,重新运行几次就好了. 自定义模板标签,可以不用写views,url直接通过自定义函数把变量传给模板. 具体实现: 1.在app下新建Pyt ...

随机推荐

  1. C# DES加密类,16位的加密。

    这个加密类是与java写的DES加密不同时,自己写的,最后与Java的加密相同了,解决了加密后不同的问题. 可以直接调用里面的加密和解密的方法. using System; using System. ...

  2. Java_02变量、数据类型和运算符

    1.变量命名规则 变量必须以字母.下划线 " _ " 或 " $ " ( " ¥ " ) 符号开头. 变量可以包括数字,但不能以数字开头. ...

  3. .Net牛刀小试-1缓冲使用

    根据文件名缓冲文件: /// <summary> /// 根据文件名缓冲指定目录文件 /// </summary> public class FileCacheAdapter ...

  4. nginx ssl 配置

    user www www; worker_processes auto; error_log /home/wwwlogs/nginx_error.log crit; pid /usr/local/ng ...

  5. iOS Simulator 模拟器 与 Android Emulator 仿真器:为什么叫不同的英文名字?(待补充)

    iOS Simulator 模拟器 与 Android Emulator 仿真器:为什么叫不同的英文名字?(待补充)

  6. 【原创】Bug管理操作规范个人经验总结

    1. 禅道简介 禅道是一个基于“敏捷开发”模式的软件开发全生命周期管理软件,在国内的软件开发公司里占据最大的份额,从大公司到小公司,都能适用. 笔者使用禅道多年,根据自己的经验总结了一套Bug管理的方 ...

  7. Go外包 Go语言外包 Golang外包商 浅谈Go的全局变量和生命周期

    最近做Go语言开发,有些心得分享下: Go语言全局var不同于PHP里的全局var,最大区别session 还是app,app 所有人都可以改.session自己改.不同过程之间通用   比如我php ...

  8. Unity3D外包 团队更新一下UE4和Unity3D案例

    欢迎联系我们索取,谢谢! 有项目外包请联系QQ:372900288 索取案例.

  9. 黄聪:微信h5支付demo微信H5支付demo非微信浏览器支付demo微信wap支付

    一.首先先确定H5支付权限已经申请! 二.开发流程 1.用户在商户侧完成下单,使用微信支付进行支付 2.由商户后台向微信支付发起下单请求(调用统一下单接口)注:交易类型trade_type=MWEB ...

  10. C#使用NPOI读写Excel的注意事项

    NPOI的基本使用参照:https://www.cnblogs.com/lixiaobin/p/NPOI.html 既存文档读取修改方法 *既存Excel文档修改保存注意使用FileMode.Crea ...