博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django 自定义tag和filter
阅读量:6875 次
发布时间:2019-06-26

本文共 1756 字,大约阅读时间需要 5 分钟。

自定义的标签tag和filter,必须要放在已经在settings.py中INSTALLED_APP里面注册了的app下。

假设app是polls

首先,在polls目录下建立templatetags目录,结构如下:

polls/

      __init__.py

      models.py

      templatetags/

                   __init__.py   # 包含了__init__.py的才会被django认作是文件夹

                   polls_extras.py

      views.py

在模板中使用标签时要{% load polls_extras.py %}

现在可以在polls_extras.py中定义我们自己的tag和filter了

# polls_extras.py

from django import template

# 为了可以成为在库(Liberary)中有效的标签,module模块中(polls_extras.py)必须包含一个template.Library的实例变量register

 

register = template.Library()

# 编写自定义的filter

def cut(value, arg):

    return value.replace(arg, '')

# 这样在模板中{

{variable|cut:'test string'}}即将变量variable用cut来过滤,将variable中的'test string'剔除掉(变成了空字符串)

# 大多数的filter没有参数

def lower(value):

    return value.lower()

 

# 编写完自定义的filter,接下来就要注册(register)这些filter了

register方式一:

    register.filter('cut', cut)

    register.filter('lower', lower)

register方式二: 将register.filter当成装饰器来用

 

@register.filter(name='cut')

def cut(value, arg):

    return value.replace(arg, '')

 

@register.filter     # 如果注明了name='xx'则filter名字为xx,如果没有给name参数,则默认filter名字是方法的名字

def lower(value):

    return value.lower()

 

@register.filter(is_safe=True) # is_safe=True可以过滤掉不安全的HTML characters(<,>,',",&),当在value基础上再家字符串时也需要用到is_safe

def add_xx(value):

    return "%sxx" % value

from django.utils import timezone

@register.filter  # 对时间对象进行处理

def utc2local(times):

    return timezone.localtime(timezone.make_aware(times, timezone.utc).strftime("%Y-%m-%d %H:%M:%S"))

 

@register.filter

def number(value): # 对浮点数进行处理

    if isinstance(value, float):

        return "%g" % value

    return value

 

# 自定义标签

import datetime

@register.assignment_tag

def current_time(format_string):

    return datetime.datetime.now().strftime(format_string)

# 在模板中: {% current_time "%Y-%m-%d %I:%M %p" as the_time %}

           <p>the time is {

{ the_time }}.</p>

 

转载于:https://www.cnblogs.com/lixiaodi/p/4904147.html

你可能感兴趣的文章
LDAP Admin:开源的Windows LDAP管理工具
查看>>
yii 学习笔记十六、数据分页
查看>>
Keepalived+Lvs---初级安装
查看>>
我的友情链接
查看>>
MVC与MVP模式设计
查看>>
Linux虚拟机里面安装VMware Tools增强工具
查看>>
iOS 获取手机型号,系统版本
查看>>
yii上传图片、yii上传文件、yii控件activeFileField使用
查看>>
DevExpress:条形码显示控件BarCodeControl
查看>>
Eclipse中用于CodeTemplate的变量总结
查看>>
一个技术高手的博客,看了不要错过
查看>>
Cocos2d-x--Box2D使用GLES-Render.h渲染查看刚体
查看>>
图片阴影效果和影子效果
查看>>
windows7引导故障的解决
查看>>
妹子与汉子——引用与指针的区别(1)
查看>>
我的友情链接
查看>>
python Day 4 :员工信息表/ATM+购物车/计算器
查看>>
LNMP 配置NGINX 支持THINKPHP PATHINFO模式
查看>>
Ubuntu 下让sublime-text3支持中文输入法
查看>>
我的友情链接
查看>>