2017-03-09 2 views
0

Hochgeladene Bilder von Benutzern werden wie die meisten Django-Apps im Ordner media gespeichert. Aus irgendeinem Grund haben sie aufgehört zu zeigen, nachdem ich ein paar Änderungen in meiner App vorgenommen habe. Das Seltsame ist, wenn ich auf inspect Element auf dem Bild div klicke, zeigt es den img src und es ist korrekt. Wenn ich den Mauszeiger über den img src: <img src="/media/REC-2.jpg"> halte, wird nur angezeigt, dass das Bild nicht geladen werden konnte. Denken Sie daran, dass alle meine statischen Dateien in Ordnung sind. Nur die Medienbilder (Bilder, die durch einen Benutzer Post hochgeladen werden), werden nicht angezeigt.Medienbilder werden nicht angezeigt, obwohl sie erfolgreich auf der Seite geladen wurden

Es gibt auch eine komische Sache in meiner Sicht, die auf das Problem hinweisen könnte. Hier ist mein Code:

choices.py

CATEGORY_CHOICES = (
    ('1', 'news'), 
    ('2', 'sport'), 
    ('3', 'technology'), 
) 

Urls

url(r'^(?P<category>\w+)/', boxes_view, name='bv'), 

Ansichten

def boxes_view(request, category): 
    print('initial', category) 

    for a, b in CATEGORY_CHOICES: 
     if b == category: 
      category = a 

    print('category', category) 

    posts = Post.objects.filter(category=category) 
    for post in posts: 
     print('POST', post.id) 

    return render(request, 'boxes.html', {'posts': posts}) 

Hier ist, was in meinem Terminal nach oben kommt, nachdem die Seite geladen (http://127.0.0.1:8000/news/):

initial news 
category 1 
POST 1 
POST 2 
... 
POST 241 
POST 242 
[09/Mar/2017 23:39:33] "GET /news/ HTTP/1.1" 200 19661 
[09/Mar/2017 23:39:34] "GET /static/css/base.css HTTP/1.1" 304 0 
initial media 
initial media 
category media 
initial media 
category media 
initial media 
initial media 
[09/Mar/2017 23:39:34] "GET /static/images/settingsIcon.png HTTP/1.1" 304 0 
category media 
[09/Mar/2017 23:39:34] "GET /media/465054_3137058941780_869886704_o_o8zCskP.jpg HTTP/1.1" 200 6370 
[09/Mar/2017 23:39:34] "GET /static/images/trtLogo.png HTTP/1.1" 304 0 
category media 
category media 
[09/Mar/2017 23:39:34] "GET /media/REC-2.jpg HTTP/1.1" 200 6370 
[09/Mar/2017 23:39:34] "GET /static/images/mapIcon.png HTTP/1.1" 304 0 
[09/Mar/2017 23:39:34] "GET /static/js/base.js HTTP/1.1" 304 0 
[09/Mar/2017 23:39:34] "GET /media/htcStory_xoFbTkY.JPG HTTP/1.1" 200 6370 
[09/Mar/2017 23:39:34] "GET /media/34_comparison.jpg HTTP/1.1" 200 6370 
[09/Mar/2017 23:39:34] "GET /media/REC_aeXxNPK.jpg HTTP/1.1" 200 6370 

Was passiert hier? Die ersten paar Zeilen sind korrekt, es druckt initial news, dann category 1 nach Durchlaufen der for-Schleife, dann geht es durch jede Post. Dann wird alles komisch. Es geht zurück zu den ersten Druckanweisungen und druckt initial media und category media viele Male. Und dazwischen lädt er die Medienbilder. Irgendeine Idee, was los ist und wie ich es beheben kann?

Edit: Voll urls.py

urlpatterns = [ 
    url(r'^more/$', more, name='more'), 
    url(r'^q/', search, name='search'), 
    url(r'^admin/', admin.site.urls, name='admin'), 
    url(r'^post/', include('post.urls')), 
    url(r'^accounts/', include('allauth.urls')), 

    url(r'^profile/(?P<user>\w+)/', profile, name='profile'), 

    #category 
    url(r'^(?P<category>\w+)/(?P<id>\d+)/', article, name='article'), 
    url(r'^(?P<category>\w+)/', boxes_view, name='bv'), 
] 

if settings.DEBUG: 
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

settings.py

MEDIA_URL = '/media/' 

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

STATIC_URL = '/static/' 

STATIC_ROOT = 'draft1/static' 

STATICFILES_DIRS = [ 
    os.path.join(BASE_DIR, 'static'), 
] 
+0

Ich glaube nicht, dass dies Ihr Medienproblem lösen wird, aber Sie haben vergessen, '$' am Ende der meisten Ihrer URLs hinzuzufügen, was bedeutet, dass Sie möglicherweise unerwartetes Verhalten haben. Die URLs, die Sie aus anderen Modulen importieren, benötigen sie nicht, aber Sie werden sie wahrscheinlich in Ihre URLs 'profile',' article' und 'bv' einfügen. – ChidG

+0

Es löst es nicht, aber wenn ich ein '$' am Ende von 'bv' hinzufüge, ändern sich alle Medienbildanforderungen von' "GET /news/media/htcStory_xoFbTkY.JPG HTTP/1.1" 200 19616' zu '" GET /news/media/htcStory_xoFbTkY.JPG HTTP/1.1 "404 4923'. Wenn ich '$' nicht addiere, dann haben die GET für Medien alle die gleiche Nummer nach 200, während das Hinzufügen von '$' mir eine andere Nummer für jedes Bild nach 404 gibt. – Zorgan

+0

ok also ich denke, es gab zwei Probleme - das Eines maskierte das wahre Problem mit den Mediendateien, das heißt, sie wurden nicht an dieser Adresse serviert. Was vorher passierte war, dass Anfragen an '/ media /' an die 'boxes_view' weitergeleitet wurden und nichts zurücksendeten. Sie können jetzt das Problem mit Mediendateien effektiver beheben. – ChidG

Antwort

0

Das Problem sieht nicht, wie es hier ist, aber in Ihrem Bild-Upload-Code. Da jede jpg dieselbe Größe hat (6370) und jede png die Größe 0 hat, stimmt etwas nicht damit, wie Sie die Bilder bereitstellen.

In der Tat scheint alles Anfrage neben der ursprünglichen GET /news/ zu versagen. Antworten von Anfragen auf /static/ haben alle die Größe 0 und Antworten von Anfragen auf /media/ haben alle die Größe 6370.

+0

Wie kann ich feststellen, ob ein Problem mit der Bereitstellung meiner Bilder besteht? Auch alle statischen Dateien funktionieren und zeigen gut, obwohl es 0 sagt (nicht sicher, was das bedeutet). – Zorgan

+0

Sehen Sie, welche 6370 Byte Ihre App für die 'jpg'-Dateien bereitstellt. Öffnen Sie die Registerkarte "Chrome-Netzwerk", klicken Sie auf eine Anforderung für die Ressource "jpg", und zeigen Sie eine Vorschau der Antwort an. – Julien

+0

Alle Medienbilder sagen "Diese Anfrage hat keine Antwortdaten verfügbar". Sie haben auch keine Vorschau zur Verfügung. – Zorgan

Verwandte Themen