【问题标题】:How can I load a module in a Django template with a variable for the module name?如何使用模块名称的变量在 Django 模板中加载模块?
【发布时间】:2020-08-29 17:18:29
【问题描述】:

我想在 Django 中构建一些非常相似的应用程序,但我希望它们加载不同的标签/过滤器模块。为此,我希望 html 模板是通用的。例如,我想要类似的东西

{% load specific_tags %}

然后我想在上下文处理器中为每个应用程序定义变量 specific_tags。但是 Django 认为它应该在 settings.py 中已安装的应用程序中查找“specific_tags”。如何告诉 Django/Python 首先从上下文处理器评估变量的内容?

最好的问候

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    您为什么不简单地将这些值放在设置文件中,这就是我区分开发、测试、演示和生产环境的方式,以及使用此处找到的解决方案之一在您的模板中加载该值:

    Can I access constants in settings.py from templates in Django?

    【讨论】:

    • 我不确定我是否完全理解你。假设我有三个应用程序 A、B 和 C。为了有一个易于维护的代码,我想使用相同的 html 模板,但实际上它们内部必须有一些差异,比如不同的路径等等.所以我想在其中包含变量,根据当前视图中的应用程序替换它们。为此,我想使用不同的过滤器。但我什至希望在它们中使用相同的过滤器名称作为变量,以便模板文件可以相同。
    • 好吧,正如我之前写的,你可以把所有东西都放在你的 settings.py 中,尤其是路径。同样,您可以创建名为 from example texts.py 的新文件并将所有变量放在那里并将其包含在您的代码中。比你可以在你的模板中使用它。我认为这里不需要创建过滤器。
    • 好的,所以我会有一个文本文件,如 texts.py 或 variables.py 或类似的东西。在其中我会有类似 varpath1 = '/yada/' varpath2 = '/foo/' varpath3 = '/bar' 但是在模板中,我总是只想有类似 varpath 而不是 varpath1/2/ 3.然后我怎么能告诉模板用 texts.py 或 variables.py 中的相应 var 替换 varpath?
    • 如果我理解你的话,你正在制作多个应用程序,但希望使用相同的模板,对吗?因此,如果是这种情况,您将在 app1 的 variables.py 中拥有 varpath='something_app1",而在 app2 的 variables.py 中,您将拥有相同的 varpath="something_app2"。在模板中,您将始终使用 varpath。那是什么你想达到什么目标?
    • 是的,就是这样。
    猜你喜欢
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 2011-02-08
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多