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