我正在尝试在开发中设置我的静态文件。我的图片位于polls / static / images / banner.jpg中。当我导航到127.0.0.1:8000/时,横幅会出现,但是当我转到127.0.0.1:8000/2ndpage时,横幅会中断。
我的索引(URL:127.0.0.1:8000/)模板包含:
{% include 'polls/header.html' %}
标语http://127.0.0.1:8000/static/images/banner.jpg的URL
我的第二页模板还包含:
{% include 'polls/header.html' %}
但是横幅广告的URL更改为http://127.0.0.1:8000/2ndpage/images/banner.jpg
我的polls / header.html模板:
<img src="{{ STATIC_URL }}images/gcs_banner.jpg" />
urls.py
from django.conf.urls.defaults import patterns, include, url
urlpatterns = patterns('polls.views',
url(r'^$', 'index'),
url(r'^2ndpage/$', '2ndindex'))
views.py
def index(request):
...
return render_to_response('polls/index.html', {'latest_people_list': latest_people_list,}, context_instance = RequestContext(request))
def 2ndpage(request, people_id):
...
return render_to_response('index/detail.html', {'people': p}, context_instance = RequestContext(request))
为什么URL从../static/ ..更改为../ 2ndpage / ..?如何解决此问题,以便在我使用{%include'polls / header.html'%}时,横幅总是显示出来?
最佳答案
我认为在第二页中,未定义{{ STATIC_URL }}
。因此,src以images/gcs_banner.jpg
结尾。这是相对网址,因为它没有前缀斜杠。然后,使用当前的绝对网址/2ndpage/images/gcs_banner.jpg将其转换为绝对路径。{{ STATIC_URL }}
可能是由上下文处理器设置的-至少是它在我的项目中的工作方式。 Context processors are actually a feature from RequestContext。当视图返回没有RequestContext的响应时,上下文处理器将不会运行,例如:
from django import shortcuts
# ....
return shortcuts.render_to_response(template_name, context)
这是在render_to_response()中显式使用RequestContext的示例:
from django import shortcuts
from django import template
# ....
return shortcuts.render_to_response(template_name, context,
context_instance=template.RequestContext(request))
也就是说,Django 1.3通过隐式使用RequestContext render()提供了更好的快捷方式:
from django import shortcuts
# ....
return shortcuts.render(request, template_name, context)
关于javascript - Django:静态文件图像URL路径中断,除了主页模板,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9543869/