首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我可以从Django中的模板访问settings.py中的常量吗?

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

Stack Overflow用户
提问于 2009-01-11 16:32:47
回答 11查看 178K关注 0票数 418

我在settings.py中有一些东西,我希望能够从模板访问,但我不知道如何做到这一点。我已经试过了

代码语言:javascript
复制
{{CONSTANT_NAME}}

但这似乎并不管用。这个是可能的吗?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2009-01-11 17:28:51

如果使用Django内置的通用视图或在render_to_response快捷方式函数中传入上下文实例关键字参数,django提供对模板的某些常用设置常量的访问,比如settings.MEDIA_URL和一些语言设置。下面是每种情况的一个示例:

代码语言:javascript
复制
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.views.generic.simple import direct_to_template

def my_generic_view(request, template='my_template.html'):
    return direct_to_template(request, template)

def more_custom_view(request, template='my_template.html'):
    return render_to_response(template, {}, context_instance=RequestContext(request))

这两个视图都有几个常用的设置,如作为{{ MEDIA_URL }}提供给模板的settings.MEDIA_URL等。

如果您希望访问设置中的其他常量,则只需解压缩您想要的常量并将它们添加到您在视图函数中使用的上下文字典中,如下所示:

代码语言:javascript
复制
from django.conf import settings
from django.shortcuts import render_to_response

def my_view_function(request, template='my_template.html'):
    context = {'favorite_color': settings.FAVORITE_COLOR}
    return render_to_response(template, context)

现在您可以在模板上以{{ favorite_color }}的身份访问settings.FAVORITE_COLOR

票数 197
EN

Stack Overflow用户

发布于 2011-10-11 00:58:19

我发现最简单的方法是使用单个custom template tag

代码语言:javascript
复制
from django import template
from django.conf import settings

register = template.Library()

# settings value
@register.simple_tag
def settings_value(name):
    return getattr(settings, name, "")

用法:

代码语言:javascript
复制
{% settings_value "LANGUAGE_CODE" %}
票数 310
EN

Stack Overflow用户

发布于 2014-09-15 12:54:35

查看django-settings-export (免责声明:我是此项目的作者)。

例如..。

代码语言:javascript
复制
$ pip install django-settings-export

settings.py

代码语言:javascript
复制
TEMPLATES = [
    {
        'OPTIONS': {
            'context_processors': [
                'django_settings_export.settings_export',
            ],
        },
    },
]

MY_CHEESE = 'Camembert';

SETTINGS_EXPORT = [
    'MY_CHEESE',
]

template.html

代码语言:javascript
复制
<script>var MY_CHEESE = '{{ settings.MY_CHEESE }}';</script>
票数 104
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/433162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档