簡體   English   中英

媒體文件未在Django中顯示

[英]Media Files not Displaying in Django

我正在嘗試在網頁上顯示用戶上傳的圖像。 當我使用Django管理界面上傳圖像文件時(我為帶有文件字段的圖庫圖像創建了模型),該圖像正確存儲在/ media / images中。 我在settings.py中設置了媒體設置,如下所示:

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

項目urls.py:

from django.conf.urls import include, url
from django.contrib import admin
import gallery.views
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('gallery.urls')),
]+ static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)

圖庫urls.py:

from django.conf.urls import url
from django.conf import settings
from django.conf.urls.static import static
from . import views

urlpatterns = [
url(r'^', views.homepage, name = 'home'),
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

圖庫views.py:

def homepage(request):
    texts = Sitetext.objects.all()
    gal = Galleryimg.objects.all()
    gal.order_by('position')


return render(request,'index.html', {"text1":texts[0].text,"text2":texts[1].text,"text3":texts[2].text,"text4":texts[3].text,"title1":texts[0].title,"title2":texts[1].title,"title3":texts[2].title,"title4":texts[3].title,"gallery":gal})

然后,這是訪問圖像的模板代碼的一部分:

{% for g in gallery %}
    <div class="col-md-3 col-sm-4 col-xs-6">
        <img class="img-responsive" src="g.imgfile.url" />
    </div>
{% endfor %}

創建圖庫圖像時,會彈出損壞的圖像,但無法正確訪問該圖像。

  1. gallery.urls文件中刪除static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)部分。

  2. src="g.imgfile.url"替換為src="{{ g.imgfile.url }}"

拋開問題:為什么將這個大詞典( {"text1":texts[0].text,... )傳遞給模板? 這是容易出錯的錯誤做法。 您應該只傳遞'texts': texts和模板內部使用{% for text in texts %} forloop對其進行迭代 因此, render方法應該類似於render(request, 'index.html', {'texts': texts, 'gallery': gal})

我這樣做,就能從Django開發服務器提供媒體文件:

urlpatterns += [
    url(r'^media/(?P<path>.*)$', django.views.static.serve, {
    'document_root': settings.MEDIA_ROOT}),]

僅將其包括在項目urls.py中就足夠了。

您的問題可能是urls.py中的媒體URL條目不正確。 您似乎與媒體文件的實際URL不匹配,該URL可能類似於/media/something.png 您似乎只符合/media/資格。 我還認為您的正則表達式應為^media/ ,而不是/media/

暫無
暫無

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

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