tin*_*ino 4 django django-templates python-import
我有相当多的自定义模板标签可以执行各种功能,包括:
所有这些函数都驻留在一个文件中:app/templatetags/custom_tags.py. 当我想在模板中使用这些标签之一时,我使用{% load custom_tags %}.
但是,在任何给定模板中实际上只使用了一小部分可用标签。 换句话说,所有这些函数都被“加载”到模板中,但在特定的 Web 请求中只有少数函数被调用。
{% load custom_tags %}对应用程序中其他地方的后续调用不会导致任何额外的开销?如果这个问题中有不正确的假设或前提,我深表歉意。我很想更好地理解导入 python 代码的含义,或者特别是在 Django 环境中。
该load标签被定义在这里并实际执行加载在这里和这里。两个地方都调用到get_library,在此处定义。根据那里的文档字符串,是的,它在此处初始化的字典中的同一进程中缓存模板标记/过滤器库。
模板标签的模块现在被更早地加载,当解析器被实例化时,库被直接存储在解析器上。加载标签调用find_library here和here,它只是直接从解析器获取已经加载的标签。
正如@spectras 在下面指出的那样,无论 Django 版本如何,标签的加载行为严格来说都是副作用,并且标签返回 ( <=1.8 / 1.9 ) 一个无操作节点( <=1.8 / 1.9 ),它不呈现任何内容——因此就这一点而言,并没有真正的性能考虑。
| 归档时间: |
|
| 查看次数: |
796 次 |
| 最近记录: |