Django:无法从模板中的设置渲染STATIC_URL

时间:2011-03-29 21:00:02

标签: python django

http://docs.djangoproject.com/en/dev/howto/static-files/

这表明我可以在模板中使用STATIC_URL从settings.py中获取值。

模板看起来像这样:

<link href="{{STATIC_URL}}stylesheets/tabs.css" rel="stylesheet" type="text/css"  media="screen" />

Settings.py看起来像这样:

STATIC_ROOT = ''
STATIC_URL = '/static/'

当我转到页面时,我得到<link href="stylesheets/tabs.css",即没有STATIC_URL。

我错过了什么?

3 个答案:

答案 0 :(得分:52)

您必须在context_instance=RequestContext(request)中使用render_to_response,例如:

return render_to_response('my_template.html',
                          my_data_dictionary,
                          context_instance=RequestContext(request))

或使用新的快捷方式render

正如Dave指出的那样,您应该检查settings.py中的django.core.context_processors.static变量中是否有TEMPLATE_CONTEXT_PROCESSORS。正如the docs所说,它默认存在。

答案 1 :(得分:3)

不建议直接使用STATIC_URL变量。请参阅accepted answer

中的this question

而不是

{{STATIC_URL}}stylesheets/tabs.css

使用

{% load staticfiles %}
{% static 'stylesheets/tabs.css' %}

答案 2 :(得分:0)

我也有同样的问题,解决方法如下:

在settings.py中 添加:

django.template.context_processors.static

这里:

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': TEMPLATE_DIRS,
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.template.context_processors.static',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',
        ],
    },
},

]