0

友達、

私は Django 1.6 を使用しており、先週 (!) Django 管理サイト経由でアップロードされた Web ページに写真を表示しようとしました。

私はこれが一般的な問題であることを知っています。私はドキュメントを読んでみましたが、これとこれのよう多数の SO の質問はすべて成功しませんでした。

管理サイト経由で画像をアップロードした後、画像が次のフォルダーに存在することがわかります。

/home/ian/django/mysite/cars/media/images/1.JPG

しかし、ページが読み込まれると (または管理サイト経由で画像をアップロードした後に画像を表示しようとすると)、404 エラーが表示されます。画像のソースは次のとおりです。

<li><img src="/media/images/1.JPG" height="420"/></li>

model.pyには次のフィールドがあります。

photo = models.ImageField(upload_to='images/')

urls.pyには以下が追加されています。

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

テンプレートは次のとおりです。

{% extends "base.html" %}
<h1>Here</h1>
<p>{{ collectiondetail.title }}</p>
{% for photo in photos %}
   <li><img src="{{ photo.photo.url }}" height="420"/></li>    
{% endfor %}    
{% endblock %}

最後に、settings.pyは次のとおりです。

STATIC_ROOT = '/home/ian/django/mysite/cars/static/'

STATIC_URL = '/static/'

MEDIA_ROOT = '/home/ian/django/mysite/cars/media/'

MEDIA_URL = '/media/'

私は何を逃したのですか?

4

2 に答える 2

1

使用している urls.py スニペットは開発専用であり、デバッグ モードでのみ機能します。あなたが持っているものはすべて正しいように見えるので、 settings.py で再確認してくださいDEBUG = True。この機能に関するドキュメントから:

このヘルパー関数はデバッグ モードでのみ機能し、指定されたプレフィックスがローカル (/media/ など) であり、URL ではない場合にのみ機能します。

于 2014-06-16T20:39:27.637 に答える
0

助けてくれてありがとう。ファイルがアップロードされたときのデフォルトのアクセス許可は問題ありませんでした。

最後に、問題を 2 つの設定にまで追跡することができました。

MEDIA_URL は以前に次のように設定されていました:

MEDIA_URL = '/media/'

これを次のように変更しました。

MEDIA_URL = '/cars/media/'

から urls.py ファイルの以下を変更しました

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

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

そして今、画像は期待どおりに表示されます。

于 2014-06-22T12:41:22.533 に答える