Django:如何在HTML模板中导入变量

2 投票
3 回答
3354 浏览
提问于 2025-04-16 16:54

我有一个Django应用程序,我想在我的模板中把所有出现“公司ID”的地方都改掉。这个过程可能会很麻烦,因为我得在每个提到“公司ID”的模板里都做这个修改。所以我想到了一个办法,创建一个新的文件来存储这个信息,这样我就可以方便地自定义公司ID。

config.py

company_no = "Company id"

这个方法可以在我的forms.py文件中使用。我可以通过下面的方式导入company_no

forms.py

from mmc.config import company_no

但是,我该如何在模板中做到同样的事情呢?在模板中导入company_no,有没有什么办法可以实现?

3 个回答

0

你可以创建一个共享的模板,然后使用 include 把它加载到主模板里。接着,在这个共享模板中,你可以加载并调用一个 自定义模板标签,这个标签会生成一个上下文变量,然后像往常一样渲染它。

另外,你也可以创建一个 自定义上下文处理器,它会自动把数据加载到上下文实例中,然后在共享模板中像往常一样渲染。

4

这就是上下文处理器的用途。你可以在settings.py文件里定义你的公司名称,然后写一个上下文处理器,把这个名称从settings.py中导入,并以字典的形式返回。这样,在每个模板中都能使用这个名称(只要你在渲染模板时使用RequestContext)。

1

正如Blender所说,当你渲染模板时,需要把变量作为上下文的一部分传进去。你可以创建一个字典或者一个命名元组,把一些常用的项目存储在一个函数加载的配置里。

如果有很多模板需要显示相同的数据,你还应该考虑使用模板继承。这样的话,你可以有一些方法来加载与特定基础模板对应的上下文内容。

撰写回答