如何存储动态站点范围的变量

时间:2016-10-08 06:17:01

标签: django

我有一个html文件是基础,其他html文档扩展。它是一个静态页面,但我想在菜单中有变量。我不认为为它创建一个视图是明智的,因为我不我打算让用户单独访问基地。所以在我的项目中我可以存储可以在任何页面上调用的站点范围的动态变量,而无需在视图中明确说明它们。 提前谢谢。

4 个答案:

答案 0 :(得分:2)

对于用户特定变量,请使用session

对于全局常量(不是变量!),请使用settings.py

对于全局变量,请考虑将其存储在数据库中,以便它可以是多线程&多进程安全。

答案 1 :(得分:0)

我环顾四周,看到了不同的方法,但是对我来说最不妥协DRY哲学的方法是在项目中注册一个标签然后在基础模板中输入它。它更整洁看到这里https://stackoverflow.com/a/21062774/6629594一个例子

答案 2 :(得分:0)

存储可以占用任意数量的地方,我把它放在数据库中的统计模型中,这样你就可以获得所有优点(并且可以在视图中轻松访问)。

然后我有一个上下文处理器编写如下:

@ <-------- (think "Robin Hood")

将它添加到settings.py中的上下文处理器:

#context_processors.py:
def my_custom_context_processor(request):
    return {'custom_context_variable1':'foo','custom_context_variable2':'bar'}

如果您使用render()来渲染模板,那么您可以使用:

TEMPLATE_CONTEXT_PROCESSORS = (
...
"my_app.context_processors.ny_custom_context_processor", 
)

返回&#39; foo&#39;在你的模板中。显然返回字符串仅作为示例,只要您的上下文处理器返回一个字典,您就可以使用任何您喜欢的字符串。

答案 3 :(得分:-1)

您也可以尝试使用php页面。

然后在每个页面上使用包含'var.php'的包含文件访问变量。

这些都不会在源html中显示,因为它只在服务器端处理。

如果您想尝试此操作,请给我发邮件,我会向您发送一些示例代码。