Django 从文件导入变量

0 投票
2 回答
1812 浏览
提问于 2025-04-18 17:22

我想创建一个新的 .py 文件,用来存储一些会不断变化的特定变量。

比如说在一个叫 variables.py 的文件里。

var1 = 5
var2 = 10
var3 = "Hello"

然后在 views.py 里只需要写 from myapp.variables import * 就可以了。

我想在所有的视图中使用这些变量,只是用来渲染。

{{ var1 }}
{{ var2 }}

为什么这样不行呢?

2 个回答

0

你只需要把它们作为上下文传递进去:

from django.shortcuts import render
from myapp.variables import var1, var2, var3

def my_view(request):
    return render(request, 'myapp/index.html', {"var1":var1, "var2":var2, "var3":var3})

https://docs.djangoproject.com/en/1.6/topics/http/shortcuts/

2

如果这些变量不是被视图使用,而只是用来渲染的话,你可以创建一个上下文处理器。

这个上下文处理器可以放在你的应用文件夹里的 variables.py 文件中。

def my_variables(request):
    return {
        "var1": True,
        "var2": "foo",
        "var3": 42,
    }

然后在你的 settings.py 文件中进行设置。

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    "django.core.context_processors.static",
    "django.core.context_processors.tz",
    "django.contrib.messages.context_processors.messages",
    "your_app.variables.my_variables",
)

这样一来,这些变量就可以在你渲染的每个模板中使用了。

撰写回答