在Django中编写模板(template)的时候, 有时候可能会用到settings中设定的变量, 比如说STATIC_URL。 此时, 如果你直接使用 是取不到值的。 那么怎么才能在模板中使用呢? 难道非得在每个view中添加到context中吗?

答案是否定的。 根据Django文档中所描述, 我们至少有两种方法可以直接使用。 http://docs.djangoproject.com/en/dev/howto/static-files/#referring-to-static-files-in-templates

方法1:

使用 { % load static %} 载入 static 模块,然后使用 { % get_static_prefix %} 就可以了。

{ % load static %}

<img src=”{ % get_static_prefix %}images/hi.jpg” />
当然也可以将其定义为变量以多次使用

{ % load static %}
{ % get_static_prefix as STATIC_PREFIX %}
<img src=”images/hi.jpg” />
<img src=”images/hi2.jpg” />

方法2:

这个方法是推荐的方法, 直接使用 RequestContext 来传递。 其原因就是因为settings中定义的变量都会在request中传递, 但是response的时候是没有这些context的, 所以Django专门定义了RequestContext来帮你组合 (其实你自己也可以做这件事)。

#注意这里是django.template,由此可见是专门为template设计的
from django.template import RequestContext

def some_view(request):

# ...    
return render_to_response('my_template.html',
                          my_data_dictionary,
                          context_instance=RequestContext(request))</pre>

这个实际作用就是将request中的context全部都加到response的context中去。

这样,你就可以直接在模板中使用 来使用了,当然其他的变量也是可以的,不需要每个都单独去load了。