如何从Django中的html或js访问环境变量 [英] How to access environment variable from html or js in Django

查看:80
本文介绍了如何从Django中的html或js访问环境变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在此处使用设置环境变量

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆