2017-02-14 52 views
0

我想在我的django項目的所有頁面中顯示用戶的頭像。 我在base.html和href中使用<img>標籤:{{ request.user.profile.get_avatar }}。 但它無法正常工作。 它在工程的第一頁工作,但在另一個頁面不起作用。django如何在django應用程序的所有模板中提供圖像?

問題出在地址上。 例如在網址爲www.mysite.com/index的索引頁面中顯示圖像。但在www.mysite.com/v1/v2/v3圖像中不顯示。

這是簡檔類的get_avatar方法:

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的設置應該是絕對URL,例如

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

是的。這樣可行! tanx很多 – msln

+0

!由於在MEDIA_URL的開頭沒有使用/,在每個頁面中,圖片的地址(url)都在變化。 – msln

相關問題