Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.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
Python 使用变量动态确定要在{%load%}内加载的Django模板标记文件_Python_Django - Fatal编程技术网

Python 使用变量动态确定要在{%load%}内加载的Django模板标记文件

Python 使用变量动态确定要在{%load%}内加载的Django模板标记文件,python,django,Python,Django,我在Django项目中有一组应用程序,它们都有类似的模板。在每个应用程序的每个模板中,我加载为该应用程序定义的模板标记文件: {% load <appname>tags %} 这可能吗?上面的想法行不通,因为表达式的结果是直接解析的,而不是像其他标记那样进行解释。最终目标是通过软链接共享所有应用程序中相同的模板,以减少代码重复。显式加载标记有什么问题?记住“显式优于隐式”是Python禅宗的一部分。这看起来是个坏主意。这使得加载哪些标记以及这些标记的行为变得不可预测。整个项目的行为

我在Django项目中有一组应用程序,它们都有类似的模板。在每个应用程序的每个模板中,我加载为该应用程序定义的模板标记文件:

{% load <appname>tags %}

这可能吗?上面的想法行不通,因为表达式的结果是直接解析的,而不是像其他标记那样进行解释。最终目标是通过软链接共享所有应用程序中相同的模板,以减少代码重复。

显式加载标记有什么问题?记住“显式优于隐式”是Python禅宗的一部分。这看起来是个坏主意。这使得加载哪些标记以及这些标记的行为变得不可预测。整个项目的行为相当动态,并且许多源代码已经在应用程序之间共享,因此,就项目而言,这种行为并不寻常。一般来说,我宁愿拥有更少的动态加载的代码,也不愿拥有大量重复的文件。每个应用程序只有一组模板标记。保持模板相同(即不显式加载不同的标记名)会很有用,因为这样我就可以使用从应用程序链接到整个项目的相同底层文件。这似乎提供了一种解决方法。@Ianvdl您看到和模板标记了吗?它们的存在是为了使模板干燥/可重复使用。在不同的应用程序中使用相同名称的TemplateTag并动态加载它们的想法不是很好。这仅仅是因为做出了极其糟糕的设计决策而给自己的生活带来困难。
{% load appname|add:'tags' %}