2017-02-14 10 views
0

私のdjangoプロジェクトのすべてのページにユーザーのアバターを表示します。 私は<img>タグをbase.htmlで使用し、hrefでは次のように書きます:{{ request.user.profile.get_avatar }}。 が正しく動作しません。 プロジェクトの最初のページには機能しますが、別のページでは機能しません。django - django appのすべてのテンプレートでイメージを提供する方法は?

問題はアドレスです。 たとえば、URL www.mysite.com/indexのインデックスページに画像が表示されます。 www.mysite.com/v1/v2/v3にはイメージが表示されません。

これは、プロファイルクラスのget_avatar方法であって、MEDIA_URL設定は、例えば、絶対URLでなければならない

def get_avatar(self): 
    if self.avatar: 
     return os.path.join(settings.MEDIA_URL + str(self.avatar)) 
    else: 
     return os.path.join(settings.MEDIA_URL + str('avatars/student.jpg')) 

view of not working picture

+0

動作しないビューを表示してください。 – Alasdair

+0

settings.pyの 'TEMPLATES = []'変数に ''django.core.context_processors.request '、'を追加しましたか? – Hybrid

+0

@Hybridこの "django.template.context_processors.request"はTEMPLATES変数にあります...今では、 'django.core.context_processors.request'をTEMPLATES変数に追加してこのエラーを生成しました: 'django.core.context_processors ' – msln

答えて

1

MEDIA_URL = '/files/' 

現在のところ、相対URLは'files/'です。つまり、あなたがいるページによってURLが変わります。 www.mysite.com/indexにアクセスすると、相対URLはwww.mysite.com/files/avatars/avatar.jpgに拡大されますが、www.mysite.com/v1/v2/v3にアクセスすると、相対URLはwww.mysite.com/v1/v2/files/avatars/avatar.jpgに拡大され、これは間違っています。

+0

うん。それは動作します!タンクスたくさん – msln

+0

正確に! MEDIA_URLの始めに/を使用しないため、すべてのページで画像のアドレス(URL)が変更されました。 – msln

関連する問題