2012-03-03 4 views
1

開発中に静的ファイルをセットアップしようとしています。私はpolls/static/images/banner.jpgにある画像を持っています。 127.0.0.1:8000に移動すると、バナーが表示されますが、127.0.0.1:8000/2ndpageのようなものに移動すると、バナーが破損します。Django:スタティックファイルイメージメインページテンプレート以外のURLパスが壊れます

私のインデックスが(URLは:127.0.0.1:8000/)テンプレートが含まれています:

{% include 'polls/header.html' %} 

バナーのURLはhttp://127.0.0.1:8000/static/images/banner.jpg

私2ndpageテンプレートも含まれています

{% include 'polls/header.html' %} 

しかし、バナーのURLはhttp://127.0.0.1:8000/2ndpage/images/banner.jpg

mに変更されますyのポーリング/ 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)) 

なぜ../static/ ..からURLの変更はしません。 ./2ndpage/..? {%include 'polls/header.html'%}を使用すると、バナーが常に表示されるように、どうすれば修正できますか?

+0

第2ページの表示コードを貼り付けてください。 – jpic

+0

私は別の質問から答えを見つけました。基本的には、context_instance = RequestContext(request)を追加するだけです。しかし、私はこれが何をしているのか、なぜ私はいつもそれを追加する必要があるのか​​理解していません。誰かが簡単に説明できますか? – thedeepfield

答えて

3

第2ページでは、{{ STATIC_URL }}は定義されていないと思います。したがって、srcはimages/gcs_banner.jpgになります。 の相対URLは、接頭辞スラッシュが付いていないため、です。現在の絶対URLを使用して絶対パスに変換されます:/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) 
+0

だから問題は私がちょうどcontext_instance = RequestContext(Request)を追加する必要があったが、これが正確に何を理解していないのか... – thedeepfield

+0

これはSTATIC_URLを設定するコンテキストプロセッサを実行する。 – jpic

関連する問題