【发布时间】:2020-07-08 14:37:24
【问题描述】:
这里使用设置环境变量
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myapp.settings')
我想在 UI 中显示一些值。有什么方法可以访问来自DJANGO_SETTINGS_MODULE 的值吗?
【问题讨论】:
标签: javascript python html django
这里使用设置环境变量
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myapp.settings')
我想在 UI 中显示一些值。有什么方法可以访问来自DJANGO_SETTINGS_MODULE 的值吗?
【问题讨论】:
标签: javascript python html django
你可以在这样的上下文中传递你需要的变量
import os
from django.shortcuts import render
def your_view(request):
return render(request, 'path/to/template.html', context={
'YOUR_ENV_VARIABLE': os.environ.get('YOUR_ENV_VARIABLE')
})
然后在path/to/template.html 中,您可以访问该上下文变量。但是对于 JS 文件,它可能会有点棘手,尽管您可以使用 {{ template syntax }} 将变量值放在 HTML 中的 <script> 标记内,但通常有 JS 外部(从 HTML 链接)。然后你可以在你的 HTML 中做类似的事情。
<input id="YOUR_ENV_VARIABLE" value="{{ YOUR_ENV_VARIABLE }}" type="hidden" />
然后在你的 JS 文件中
let hiddenInput = document.getElementById("YOUR_ENV_VARIABLE");
let yourEnvVariableValue = hiddenInput.value;
您可以定义自己的template tags。示例:
# your_app/templatetags/env_extras.py
import os
from django import template
register = template.Library()
@register.simple_tag
def get_env_var(key):
return os.environ.get(key)
然后在你的 HTML 中:
{% load env_extras %}
<input id="YOUR_ENV_VARIABLE" value="{% get_env_var 'YOUR_ENV_VARIABLE' %}" type="hidden" />
附:您可能需要手动重新加载服务器才能使自定义标记生效。
【讨论】: