簡體   English   中英

MEDIA_URL圖片未顯示在模板上

[英]MEDIA_URL images not showing on template

當我將圖像部署到heroku中時,我試圖使圖像顯示在模板中,問題是當我通過管理頁面上傳圖像時,圖像鏈接為/media/media/images/8734HDFJ93.jpeg ,請注意是兩個media的目錄。 單擊鏈接后,該圖像顯示正常,但未在模板中顯示。 我嘗試在模板中獲取圖像的方法是

<img src="/{{ MEDIA_URL }}{{ myobject_instance.image }}">

我有一個具有如下圖像場的模型

image = models.ImageField(upload_to="media/images", blank=True)

我的urls.py中有這些網址

url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True, }),
url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT, 'show_indexes': True, }),

並在我的settings.py中

MEDIA_ROOT = os.path.join(BASE_DIR, 'site_media')
MEDIA_URL = '/media/'

HTML中包含雙重媒體,因為upload_to追加到MEDIA_ROOT / MEDIA_URL。 由於您在upload_to包含“媒體/圖像”,因此這使其出現兩次。 如果要刪除它,只需將upload_to為“ images”即可,如果要查看已上傳的圖像,請不要忘記移動目錄。

第二個原因是您的模板有一個小問題:

<img src="/{{ MEDIA_URL }}{{ myobject_instance.image }}">

應該:

<img src="{{ MEDIA_URL }}{{ myobject_instance.image }}">

開頭的/將使它成為Django無法找到的網址。 您將獲得“ //media/media/images/8734HDFJ93.jpeg”,而不是“ /media/media/images/8734HDFJ93.jpeg”

如果您在呈現的頁面中檢查元素,您將看到為圖像生成的URL。 您可以使用以下模板函數來代替使用“ MEDIA_URL”變量:

{% get_media_prefix %}

因此,最終將是這樣的:

<img src="{% get_media_prefix %}{{ myobject_instance.image }}">

不要忘記在模板文件的開頭包含以下行:

{% load static %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM