アップロードされた画像は、ほとんどのDjangoアプリのようにmedia
フォルダに保存されます。しかし、私はいくつかの理由で彼らは私のアプリでいくつかの変更を加えた後に表示を停止しました。奇妙なことは、画像divのinspect要素をクリックするとimg srcが表示され、正しいことです。 img src:<img src="/media/REC-2.jpg">
にカーソルを合わせると、「画像を読み込めませんでした」と表示されます。私の静的なファイルはすべて正常に表示されることを覚えておいてください。メディア画像(ユーザーからアップロードされた画像Post
)のみ表示されます。ページに正常に読み込まれたにもかかわらず、メディア画像が表示されない
私の見解には、問題が何であるかを示す奇妙なものもあります。ここに私のコードは次のとおりです。
CATEGORY_CHOICES = (
('1', 'news'),
('2', 'sport'),
('3', 'technology'),
)
のURL
url(r'^(?P<category>\w+)/', boxes_view, name='bv'),
ビュー
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})
choices.pyは、こちらのページ(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
ここには何が起こっていますか?最初の数行は正しく、それはinitial news
を印刷し、次にforループを経てcategory 1
を印刷した後、それぞれPost
を通過します。その後、それはすべて奇妙になります。最初の印刷ステートメントに戻り、何度もinitial media
とcategory media
を印刷します。これらのプリントの間に、メディアイメージがロードされます。何が起こっているのか、私はそれをどのように修正できるのか?
編集:フル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'),
]
これはあなたのメディアの問題を解決するとは思えませんが、ほとんどのあなたのURLの最後に '$'を追加することを忘れてしまいました。あなたが他のモジュールからインポートしているURLは、それを必要としませんが、 'profile'、' article'、 'bv'というあなたのURLに入れたいと思うでしょう。 – ChidG
それは解決しませんが、 'bv'の最後に' $ 'を追加すると、すべてのメディアイメージリクエストがGET /news/media/htcStory_xoFbTkY.JPG HTTP/1.1 "200 19616"から'" GET /news/media/htcStory_xoFbTkY.JPG HTTP/1.1 "404 4923'。 '$'を追加しないと、メディアのGETはすべて200以降に同じ番号になりますが、 '$ 'を追加すると404以降の画像ごとに異なる番号が与えられます。 – Zorgan
okだから私は2つの問題があると思いますメディアファイルの本当の問題を隠していました。メディアファイルは、そのアドレスで配信されていません。前に起こっていたことは、 '/ media /'へのリクエストが 'boxes_view'に送られて何も返されないということでした。これで、メディアファイルの問題をより効果的にデバッグできるようになりました。 – ChidG