django - 我可以从 Django 的模板访问 settings.py 中的常量吗?

标签 django django-templates django-settings

我希望能够从模板访问 settings.py 中的一些内容,但我不知道该怎么做。我已经试过了

{{CONSTANT_NAME}}

但这似乎行不通。这可能吗?

最佳答案

如果这是您希望每个请求和模板都具有的值,请使用 context processor比较合适。

方法如下:

  1. 在您的应用程序目录中创建一个 context_processors.py 文件。假设我想在每个上下文中都有 ADMIN_PREFIX_VALUE 值:

    from django.conf import settings # import the settings file
    
    def admin_media(request):
        # return the value you want as a dictionnary. you may add multiple values in there.
        return {'ADMIN_MEDIA_URL': settings.ADMIN_MEDIA_PREFIX}
    
  2. 将您的上下文处理器添加到您的settings.py 文件中:

    TEMPLATES = [{
        # whatever comes before
        'OPTIONS': {
            'context_processors': [
                # whatever comes before
                "your_app.context_processors.admin_media",
            ],
        }
    }]
    
  3. 在您的 View 中使用 RequestContext 将您的上下文处理器添加到您的模板中。 render shortcut自动执行此操作:

    from django.shortcuts import render
    
    def my_view(request):
        return render(request, "index.html")
    
  4. 最后,在您的模板中:

    ...
    <a href="{{ ADMIN_MEDIA_URL }}">path to admin media</a>
    ...
    

关于django - 我可以从 Django 的模板访问 settings.py 中的常量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/433162/

相关文章:

python - 如何将 django.core.urlresolvers.reverse 与函数引用而不是命名的 URL 模式一起使用?

django - 大力神 : csrf exempt django rest framework

django - 如何配置 django-auth-ldap 以使用多个 LDAP 服务器?

python - ImproperlyConfigured : You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings. configure() 在访问设置之前

django - 如何使用 SessionAuthentication 通过 Django Rest Framework 制作登录休息 API?

python - 我应该使用 GET 还是 POST 来检索结果 Django

Django:如何避免污染包含标签中的父上下文?

django - 在 Django 模板中格式化日期

python - Django settings.py 未更新