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'),
]
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
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
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