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

  • 相关阅读:
    ROXFiler 2.6
    ubuntu下lxr的运用
    NTFS3G-Linux 的 NTFS 驱动步骤
    Songbird 0.2.5 Final
    ePDFView:一个轻量的 PDF 文档阅读东西
    Gmail Notifier:又一个 Gmail 邮件通知法式
    Hybrid Share-文件分享软件
    Dolphin:KDE 中的文件管理器
    文泉驿点阵宋体 0.8(嬴政)正式公布
    KDE 4 Kludge 发布宣布
  • 原文地址:https://www.cnblogs.com/james1207/p/3323198.html
Copyright © 2011-2022 走看看