zoukankan      html  css  js  c++  java
  • Django里面的自定义tag和filter

    Django的文档里面有这么一句

    
    
    The app that contains the custom tags must be in INSTALLED_APPS 
    in order for the {% load %} tag to work. 
    
    
    

    当第一次load一个template的时候,调用源码

    def get_templatetags_modules():
        """
        Return the list of all available template tag modules.
    
        Caches the result for faster access.
        """
        global templatetags_modules
        if not templatetags_modules:
            _templatetags_modules = []
            # Populate list once per process. Mutate the local list first, and
            # then assign it to the global name to ensure there are no cases where
            # two threads try to populate it simultaneously.
            for app_module in ['django'] + list(settings.INSTALLED_APPS):
                try:
                    templatetag_module = '%s.templatetags' % app_module
                    import_module(templatetag_module)
                    _templatetags_modules.append(templatetag_module)
                except ImportError:
                    continue
            templatetags_modules = _templatetags_modules
        return templatetags_modules


    Load类型的Node 输出的定义

    class LoadNode(Node):
        def render(self, context):
            return ''

    可见他是一个空白字符串,也就是在输出的html中"抹掉"了


    example

    <html>
    <head>
    	{% load blog_extras %}
    	Hi my double value is <b>{{myvalue|mycut}}</b>
    </head>
    </html>


    will be tokenized as



    Then the block token will be set to LoadNode, var token to Variable Node  in my case, done byParser

    最后把每一个node render出来

  • 相关阅读:
    C++ 11 :override 关键字的使用
    vsphere部署说明
    Windows 下部署Subversion
    Centos 7 最小化部署zabbix
    在vmware中安装mac os
    如何将OS dmg文件制作成U盘启动
    HDU1518(dfs)java/ c++
    HDU1010(bfs)
    HDU1495(bfs)
    HD1285(拓扑排序)
  • 原文地址:https://www.cnblogs.com/james1207/p/3323198.html
Copyright © 2011-2022 走看看