Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
性能,包括Django中循环的内部模板_Django_Performance_Django Templates - Fatal编程技术网

性能,包括Django中循环的内部模板

性能,包括Django中循环的内部模板,django,performance,django-templates,Django,Performance,Django Templates,遵循Don't Repeat Yourself原则(DRY),我重构了我正在使用的Django模板 我在for循环中包含模板,每个包含的模板都可以包含零个或多个模板 我不知道这是否会导致性能问题,或者Django会自动缓存模板,并且一旦使用{%include%}包含了一个模板,那么它就不需要每次包含相同的模板(文件)时都访问HDD 当您在Python上重新导入某些内容时,它实际上不会再次重新导入,而是在已经导入的模块中查找。因此,我想知道Django是否使用了类似的方法。Django有一个可选方

遵循Don't Repeat Yourself原则(DRY),我重构了我正在使用的Django模板

我在for循环中包含模板,每个包含的模板都可以包含零个或多个模板

我不知道这是否会导致性能问题,或者Django会自动缓存模板,并且一旦使用
{%include%}
包含了一个模板,那么它就不需要每次包含相同的模板(文件)时都访问HDD

当您在Python上重新导入某些内容时,它实际上不会再次重新导入,而是在已经导入的模块中查找。因此,我想知道Django是否使用了类似的方法。

Django有一个可选方法可能会有所帮助


不过,你应该对你的应用程序进行分析,以检查模板加载是否真的是一个瓶颈(与db访问等的开销相比,我对此表示怀疑)。

我的建议只是。。。如果需要性能,请使用Jinja2而不是Django作为模板解析器。尽管Django模板解析器在过去几年中有了显著的改进,但与Jinja2相比仍然相当缓慢。有了Jinja2,您可以使用宏,使这些类型的模式变得非常简单和可重用。它们就像模板中的Python函数,可以导入。我会记住这一点。我喜欢Jinja2,因为您可以将参数传递给Django中模板中的方法,但您不能:(与数据库访问相比,模板通常加载速度很快。如果要用数据库中的信息填充模板,请先担心数据库!这似乎正是我所想的。但是,我正在使用多个第三方应用程序,我不知道它们是否是线程安全的,如文档中所要求的那样:有没有办法知道模板渲染的实际成本吗?