Django框架自定义标签和过滤器

自定义过滤器

'''定义一个无参数过滤器'''
1:#:在当前的应用中创建一个templatetags的文件夹(必须叫这个名字),然后在文件夹中创建一个python文件,名字随便
2:#在新建的python中引入django模块的template类,然后实例化一个register对象,对象的名字必须是register
    from django import template
    register = template.Library()#register对象名字不可更改
3:#在新建的python中定义过滤器:
    #使用register.filter装饰器装饰函数,就变成一个过滤器,使函数生效
    @register.filter
    def addhello(arg1):
    '''
    :param arg1:arg参数是使用过滤器时管道符前面变量的值
    :return:返回过滤器处理数据的结果
    '''
        return arg1+'你好'
4:#在html文件中使用过滤器
    '''首先引入写着过滤器的这个python文件,会自动在templatetags的文件夹下找这个文件'''
    {% load 文件名 %}#例如:{% load filter %}文件名不用加引号
    '''使用过滤器'''
    {{ name | addhello }}#addhello是自己定义的一个过滤器,然后返回一个新的值填充

'''*******************************************************************'''
'''定义一个有参过滤器'''
#定义有参过滤器就是在函数中增加一个参数,自定义过滤器函数中最多只能有两个参数
@register.filter
def addhello(arg1,arg2):
    '''
    :param arg1: 使用过滤器变量的值
    :param arg2: 传入的参数,就是管道符后面冒号后面的参数,过滤器最多只能有这两个参数
    :return: 返回处理数据后的值
    '''
    return arg1+arg2
#使用示例:
    {{ name | addhello:'你好' }}

自定义标签

#和自定义过滤器一样,在template文件夹中的python中来定义标签,引入方式也相同
@register.simple_tag#register.simple_tag装饰器申明函数是一个自定义标签
def newtag(arg1,arg2):
    '''
    自定义标签没有参数限制,可以是多个参数,但是使用的时候要一一对应
    :param arg1:传入的参数一
    :param arg2:传入的参数二
    :return:返回处理后的数据
    '''
    return arg1+arg2
#引用示例:
    {% newtag name '世界' %}注意格式:标签使用是{% %}的形式
    #第一个参数是要使用的自定义标签的函数名,后面是要传入的参数,函数有几个参数,就传入几个,一一对应

返回HTML片段的标签

##和自定义过滤器一样,在template文件夹中的python中来定义标签,引入方式也相同
#register.inclusion_tag装饰器来申明是一个返回html片段的标签,括号中申明使用的组件
@register.inclusion_tag('index.html')
def res(n1):
    '''
    参数可以随意设置,使用时要一一对应
    标签返回的值必须是字典格式的,键是前端申明的变量名,值就是变量对应的数据
    '''
    return {'li':[11,22,33]}
引用示例:
    {% res %}注意格式:标签使用是{% %}的形式

#返回HTML片段标签的执行流程
    '''概念'''
    1:在使用组件的时候,如果组件中有for循环这样的逻辑便签,在加载组件的时候,就会查找这个数据
    2:如果后台没有返回这个数据,就无法获取变量的值,就不会产生数据,这个时候就可以使用返回HTML片段标签,给组件返回一个值
    '''流程'''
    1:在页面加载到返回HTML片段标签的时候,就先去标签中生成一个值,
    2:值不会直接返回给HTMl页面,而是吧值返回给标签关联的组件,去执行逻辑,渲染组件标签
    3:组件标签渲染完成之后,html页面会加载组件,渲染组件产生的标签

原文地址:https://www.cnblogs.com/luckinlee/p/11622264.html

时间: 2024-09-30 06:45:20

Django框架自定义标签和过滤器的相关文章

django中自定义标签和过滤器

想要实现自定义标签和过滤器需要进行准备工作: 准备(必需)工作: 1  在某个app下创建一个名为templatetags(必需,且包名不可变)的包.假设我们在名为polls的app下创建了一个templatetags的包,并在该包下创建了一个名为mytags的文件.那么目录结构看起来应该就像这样: polls/ __init__.py models.py templatetags/ __init__.py mytags.py views.py 2  settings文件中的INSTALLD_A

Django下自定义标签和过滤器

---恢复内容开始--- 第一步:确保setting中的INSTALL_APPS配置当前的app,要不然Django无法找到自定义的simple_tag. 第二步:在app中创建templatetags模块(模块名只能是templatetags) 第三步:创建任意的.py文件  比如:my_tags.py from django import template from django.utils.safestring import mark_safe register = template.Li

django 自定义标签和过滤器

django 自定义标签和过滤器 Django支持自定义标签和过滤器.起初还不太重视它这项功能,但最近试了试自定义标签.发现django这个功能实在是太爽了. 首先在你项目的一个app中建立一个python源文件夹,(即文件夹里面要包含一个__init__.py.)文件夹名为templatetags.  此文件夹便是存放自定义标签和过滤器的源码的地方了. 再如果是在templatetags文件夹中定义了标签,如 test_tags.py,要如何使用我们自定义的test_tags.py呢.很简单,

Django(七)—— 模板层:变量、过滤器、标签、自定义标签和过滤器

模板层:变量.过滤器.标签.自定义标签和过滤器 将页面的设计和Python的代码分离开会更干净简洁更容易维护. 我们可以使用 Django的 模板系统 (Template System)来实现这种模式 # django模板修改的视图函数 def current_time(req): from django.template import Template,Context now=datetime.datetime.now() t=Template('<html><body>现在时刻

django 内建标签和过滤器参考

下面的标签和过滤器参考就是为那些没有 admin 站点的可用的人准备的.由于 Django 是高度可定制的,你的 admin 里的关于标签和过滤器的参考可以认为是最可信的. 内建标签参考 block 定义一个能被子模板覆盖的 块. 参阅 模板继承 了解更多信息 comment 注释.模板引擎会忽略掉 {% comment %} 和 {% endcomment %} 之间的所有内容. cycle 在循环时轮流使用给定的字符串列表中的值. 在一个循环中, 在循环过程中的每次循环里轮流使用给定的字符串

django特殊的标签和过滤器

国际化标签和过滤器 Django还提供了一些模板标签和过滤器,用以控制模板中国际化的每个方面.它们允许对翻译,格式化和时区转换进行粒度控制. 1. i18n 此标签允许在模板中指定可翻译文本.要启用它,请将USE_I18N设置为True,然后加载{% load i18n %}. 2. l10n 此标签提供对模板的本地化控制,只需要使用{% load l10n %}.通常将USE_L10N设置为True,以便本地化默认处于活动状态. 3. tz 此标签对模板中的时区进行控制. 像l10n,只需要使

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

实现自定义过滤器 1. 创建register变量 在你的模块文件中,你必须首先创建一个全局register变量,它是用来注册你自定义标签和过滤器的, 你需要在你的python文件的开始处,插入几下代码: from django import templateregister = template.Library() 2. 定义过滤器函数 自定义的过滤器就是一个带1,2个参数的python函数,一个参数放变量值,一个用来放选项值. 比如{{ var|remove:"bar" }}, va

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

django的模板系统自带了一系列的内建标签和过滤器,一般情况下可以满足你的要求,如果觉得需更精准的模板标签或者过滤器,你可以自己编写模板标签和过滤器,然后使用{% load %}标签使用他们. 代码布局 自定义标签和过滤器必须依赖于一个django app,也就是说,自定义标签和过滤器是绑定app的.该app应该包含一个templatetags目录,这个目录一个和model.py,views.py在同一个层级,记得在该目录下建立一个__init__.py文件一遍django知道这是一个pyth

Django内建模版标签和过滤器

第四章列出了许多的常用内建模板标签和过滤器.然而,Django自带了更多的内建模板标签及过滤器.这章附录列出了截止到编写本书时,Django所包含的各个内建模板标签和过滤器,但是,新的标签是会被定期地加入的. 对于提供的标签和过滤器,最好的参考就是直接进入你的管理界面.Django的管理界面包含了一份针对当前站点的所有标签和过滤器的完整参考.想看到它的话,进入你的管理界面,单击右上角的Documentation(文档)链接. 内建文档中的“标签和过滤器”小节阐述了所有内建标签(事实上,本附录中的