zoukankan      html  css  js  c++  java
  • Django自定义过滤器和自定义标签

    自定义过滤器

      1、确认app已在setting中进行注册;

      2、在app模板下创建名为templatetags的模板(切记名字一定不能改,只能是templatetags);

      3、在模板下创建任意名称的.py文件;

      4、在刚刚创建的.py文件中定制过滤器

      -具体语法 

    from django.template import Library
    register = Library()
    
    
    @register.filter(name='rule')
    # 最多包含两个参数
    def rule(value, before): # 将before替换为~ return value.replace(before, '~')

      

      5、编辑视图函数时,将value传递给模板文件

    def index(request):
        return render(request, 'one.html', {'value':'Hello, dandan!'})

      6、在模板页面中使用自定义过滤器

    <p style="color: red">
        <b>
            {% load my_tag %}
            {{ value|rule:'!' }}
        </b>
    </p>

      

    自定义标签

      自定义标签跟自定义过滤器的步骤一样,只是定义的形式有点不一样(自定义标签,返回当前格式化时间)

    # extra_tags.py
    # 自定义标签,格式化返回当前时间
    
    @register.tag(name='current_time')
    # 解析器
    def do_current_time(parse, token):  # parse解析器对象,token被解析的对象,包含标签的名字和格式化的格式
        try:
            tag_name, format_string = token.split_contents()
        except:
            raise template.TemplateSyntaxError('syntax')
        return CurrentNode(format_string[1:-1])  # 传入模板中的节点类
    
    import datetime
    class CurrentNode(template.Node):
        def __init__(self, format):
            self.format_string = str(format)
    
        # 把当前时间格式化后返回
        def render(self, context):
            now = datetime.datetime.now()
            return now.strftime(self.format_string)

      在模板中使用

    {% current_time "%Y-%m-%d %H:%M:%S" %}
  • 相关阅读:
    站立会议第八天
    Servlet基础知识
    JSP基础知识
    JSP基础知识
    JDBC工具包
    JDBC
    MySQL
    ASP.NET程序代码优化的七个方面
    中小型软件项目开发一般流程建议
    理解九种图
  • 原文地址:https://www.cnblogs.com/knowledgeYang/p/10252192.html
Copyright © 2011-2022 走看看