18

私はdjangoが初めてで、写真をアップロードしてから表示して遊んでいます。...それらを表示しようとしています。

テンプレートから画像を表示しようとすると、壊れた画像リンク アイコンが表示されます。

私はsqlite3サーバーを使用しています

設定.py

ROOT_DIR = os.path.dirname(os.path.dirname(__file__))
def location(f):
    return os.path.join(ROOT_DIR, f)
MEDIA_URL = 'http://127.0.0.1:8000/media/'
MEDIA_ROOT = location('media/')

models.py

class Image(models.Model):
    image = models.ImageField(upload_to = 'images/')

ビュー.py

from imageupload.settings import MEDIA_ROOT, MEDIA_URL

def main(request):
    imgs = Image.objects.all()
    return render_to_response('index.html', {'images': imgs, 'media_root': MEDIA_ROOT, 'media_url': MEDIA_URL})

url.py

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

今、管理者を使用して画像をアップロードしました。そして、それはうまくいくようです、彼らは私が期待する場所に行きます

しかし、それらを表示しようとすると:
template

<!DOCTYPE html>
<html>
    <img src="<correct path to project>/media/images/photo_1.JPG" />

    {% for img in images %}
    <img src="{{ media_root }}{{ img.image.name }}" />
    <img src="{{ media_url }}{{ img.image.name }}" />
    <img src="{{ img.image.url }}" />
    {% endfor %}
</html>

それぞれの壊れたアイコンを取得します。
ブラウザのソースコードは私を示しています:

<!DOCTYPE html>
<html>
    <img src="<correct path to project>/media/images/photo_1.JPG" />    
    <img src="<correct path to project>/media/images/photo_1.JPG" />    
    <img src="http://127.0.0.1:8000/media/images/photo_1.JPG" />
    <img src="http://127.0.0.1:8000/media/images/photo_1.JPG" />
</html>

それは理にかなっています。アップロードされた写真は 1 枚だけです。
ハードリンクの1つをコピーして他のhtmlファイルに入れると...動作します

4

4 に答える 4

36

あぁFFS……

どうやらそれは

MEDIA_URL = '/media/'

いいえ

MEDIA_URL = 'http://127.0.0.1:8000/media/' 

・・・#'http://127.0.0.1:8000/media/'すぐ横に書いてあるのに

作業 img リンクは次のようになります。

<img src="/media/images/photo_1.JPG" />

あなたは間違いなく必要です:

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

URLファイルにも

于 2012-05-28T05:57:13.160 に答える
3

開発環境で表示画像を探している場合は、次のことを試してください。

settings.py

SITE_ROOT = os.path.realpath(os.path.dirname(__file__))
MEDIA_ROOT = os.path.join(SITE_ROOT, 'static')
MEDIA_URL = '/static/'
STATIC_ROOT = os.path.join(SITE_ROOT, 'statics')
STATIC_URL = '/statics/'

urls.py

# somebody import this from settings
SITE_ROOT = os.path.realpath(os.path.dirname(__file__))  
urlpatterns += patterns('', 
    url(r'^static/(?P<path>.*)$','django.views.static.serve',
        {'document_root': os.path.join(SITE_ROOT, 'static')})
)

htmlビューファイル*.html:

<img src="{{ MEDIA_URL }}img/content_top_edit_form.png">

これは、静的フォルダーにimgフォルダーがあることを意味します。あなたの場合、これを変更することができます

ブラウザが表示された場合、htmlは次のように表示される必要があります。

<img src="/static/img/content_top_edit_form.png">
于 2012-05-27T21:23:06.360 に答える