Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django: Can't render STATIC_URL from settings in template

Tags:

python

django

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

This suggests that I can use STATIC_URL in 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?

like image 819
user544871 Avatar asked Mar 29 '11 21:03

user544871


2 Answers

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.

like image 88
Fábio Diniz Avatar answered Nov 20 '22 04:11

Fábio Diniz


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' %}
like image 3
aliteralmind Avatar answered Nov 20 '22 05:11

aliteralmind