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出来

  • 相关阅读:
    NOI2.5 4980:拯救行动
    NOI2.5 1490:A Knight's Journey
    NOI2.5 8465:马走日
    考试题目“部落卫队”
    考试题目“笨笨的西瓜种植”
    考试题目“笨笨玩游戏”
    NOI4.6 1455:An Easy Problem
    NOI2.5 1253:Dungeon Master
    NOI2.2 8758:2的幂次方表示
    NOI2.5 1817:城堡问题
  • 原文地址:https://www.cnblogs.com/james1207/p/3323198.html
Copyright © 2011-2022 走看看