Django: Can't render STATIC_URL from settings in template
http://docs.djangoproject.com/en/dev/howto/static-files/
This suggests that I can use STATIC_URL
i开发者_StackOverflow社区n my template to get the value from settings.py.
Template looks like this:
<link href="{{STATIC_URL}}stylesheets/tabs.css" rel="stylesheet" type="text/css" media="screen" />
Settings.py looks like this:
STATIC_ROOT = ''
STATIC_URL = '/static/'
When I go to the page I just get <link href="stylesheets/tabs.css"
i.e. no STATIC_URL.
What am I missing?
You have to use context_instance=RequestContext(request)
in your render_to_response
, for example:
return render_to_response('my_template.html',
my_data_dictionary,
context_instance=RequestContext(request))
Or use the new shortcut render
As Dave pointed out, you should check if django.core.context_processors.static
is in your TEMPLATE_CONTEXT_PROCESSORS
variable in settings.py. As the docs said, it`s there by default.
It is not recommended to directly use the STATIC_URL
variable. See the accepted answer in this question
Instead of
{{STATIC_URL}}stylesheets/tabs.css
use
{% load staticfiles %}
{% static 'stylesheets/tabs.css' %}
I have the same problem, solved like this:
in settings.py add:
django.template.context_processors.static
here:
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',
],
},
},
]
精彩评论