【发布时间】:2016-10-08 06:17:00
【问题描述】:
我有一个 html 文件,它是其他 html 文件扩展的基础。它是一个静态页面,但我想在菜单中有变量。我不认为为它创建一个视图是明智的,因为我不'不打算让用户单独访问基地。所以在我的项目中,我可以在哪里存储可以在任何页面上调用的站点范围的动态变量,而无需在他们的视图中明确说明它们。 提前谢谢你。
【问题讨论】:
标签: django
我有一个 html 文件,它是其他 html 文件扩展的基础。它是一个静态页面,但我想在菜单中有变量。我不认为为它创建一个视图是明智的,因为我不'不打算让用户单独访问基地。所以在我的项目中,我可以在哪里存储可以在任何页面上调用的站点范围的动态变量,而无需在他们的视图中明确说明它们。 提前谢谢你。
【问题讨论】:
标签: django
【讨论】:
我环顾四周,看到了不同的方法,但对我来说最不损害 DRY 理念的一种方法是在您的项目中注册一个标签,然后将其输入到基本模板中。它更整洁 请参阅此处https://stackoverflow.com/a/21062774/6629594 示例
【讨论】:
存储可以占用任意数量的位置,我将我的存储在数据库中的一个统计模型中,这样您就可以得到它的所有好处(并使其易于在视图中访问)。
然后我有一个这样写的上下文处理器:
#context_processors.py:
def my_custom_context_processor(request):
return {'custom_context_variable1':'foo','custom_context_variable2':'bar'}
将此添加到 settings.py 中的上下文处理器:
TEMPLATE_CONTEXT_PROCESSORS = (
...
"my_app.context_processors.ny_custom_context_processor",
)
如果你使用 render() 来渲染你的模板,那么你就可以使用:
{{ custom_context_variable1 }}
在您的模板中返回“foo”。显然返回字符串只是举例,只要你的上下文处理器返回一个字典,你就可以使用任何你喜欢的东西。
【讨论】:
你也可以尝试使用php页面。
然后在每个页面上使用包含“包含 var.php 的文件”来访问每个页面上的变量。
这些都不会在源 html 中可见,因为它只在服务器端进行处理。
如果你想试试这个,给我发邮件,我会给你发一些示例代码。
【讨论】: