如何从Django中的html或js访问环境变量 [英] How to access environment variable from html or js in Django
问题描述
在此处使用设置环境变量
Here set environment variables using
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myapp.settings')
我想在UI中显示一些值.有什么方法可以从 DJANGO_SETTINGS_MODULE
中访问值?
I want to display some values in UI. Is there any way to access values from DJANGO_SETTINGS_MODULE
?
推荐答案
您可以在这样的上下文中传递所需的变量
You can pass variable you need in a context like that
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文件,虽然您可以使用 {{模板语法}}
将变量值放在HTML的< script>
标记内,但可能会有些棘手.通常在外部使用JS(从HTML链接).然后,您可以在HTML中执行类似的操作.
And then in path/to/template.html
you can access that context variable. But for JS files it can get a bit tricky, although you can use {{ template syntax }}
to place your variable value inside <script>
tag in HTML, but it is common to have JS externally (linked from HTML). Then you can do something like that in your HTML.
<input id="YOUR_ENV_VARIABLE" value="{{ YOUR_ENV_VARIABLE }}" type="hidden" />
然后在您的JS文件中
let hiddenInput = document.getElementById("YOUR_ENV_VARIABLE");
let yourEnvVariableValue = hiddenInput.value;
访问环境变量而不将其传递给上下文
您可以定义自己的模板标记.示例:
# 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中:
And then in your HTML:
{% load env_extras %}
<input id="YOUR_ENV_VARIABLE" value="{% get_env_var 'YOUR_ENV_VARIABLE' %}" type="hidden" />
P.S.为了使自定义标记生效,您可能需要手动重新加载服务器.
P.S. You might need to reload your server manually in order for custom tag to take effect.
这篇关于如何从Django中的html或js访问环境变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!