【问题标题】:How to store a dynamic site-wide variable如何存储动态站点范围的变量
【发布时间】:2016-10-08 06:17:00
【问题描述】:

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

【问题讨论】:

    标签: django


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      我环顾四周,看到了不同的方法,但对我来说最不损害 DRY 理念的一种方法是在您的项目中注册一个标签,然后将其输入到基本模板中。它更整洁 请参阅此处https://stackoverflow.com/a/21062774/6629594 示例

      【讨论】:

        【解决方案3】:

        存储可以占用任意数量的位置,我将我的存储在数据库中的一个统计模型中,这样您就可以得到它的所有好处(并使其易于在视图中访问)。

        然后我有一个这样写的上下文处理器:

        #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”。显然返回字符串只是举例,只要你的上下文处理器返回一个字典,你就可以使用任何你喜欢的东西。

        【讨论】:

          【解决方案4】:

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

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

          这些都不会在源 html 中可见,因为它只在服务器端进行处理。

          如果你想试试这个,给我发邮件,我会给你发一些示例代码。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2023-03-19
            • 2013-10-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多