【问题标题】:How to access environment variable from html or js in Django如何从 Django 中的 html 或 js 访问环境变量
【发布时间】:2020-07-08 14:37:24
【问题描述】:

这里使用设置环境变量

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myapp.settings')

我想在 UI 中显示一些值。有什么方法可以访问来自DJANGO_SETTINGS_MODULE 的值吗?

【问题讨论】:

    标签: javascript python html django


    【解决方案1】:

    你可以在这样的上下文中传递你需要的变量

    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" />
    

    附:您可能需要手动重新加载服务器才能使自定义标记生效。

    【讨论】:

    • Thanx ,但是有没有办法直接访问这些环境变量而不在上下文中添加它们......
    • SiethLakshitha 抱歉回答迟了。是的你可以。我已经编辑了我的答案
    猜你喜欢
    • 2011-11-23
    • 2016-05-30
    • 2014-12-11
    • 2021-08-02
    • 2019-12-30
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2011-05-28
    相关资源
    最近更新 更多