9

管理モジュールを介してアップロードした画像を、Web ページの html 画像タグを介して表示したいだけです。画像は /home/user/work/djcode/media/chicks/blondie.jpg にあります。

これが私のmodels.pyの関連部分です

class Image(models.Model):
    model_name = models.CharField(max_length=50)
    model_pic = models.ImageField(upload_to='chicks/')
def __unicode__(self):
    return self.model_name

これが私のviews.pyの関連部分です

def main(request):
    i = get_object_or_404(Image, pk=1)
    return render_to_response('polls/main.html', {'image': i}, context_instance=RequestContext(request))

私が使用しているhtmlタグは単純です

<img src="{{ MEDIA_ROOT }}/{{ image.model_pic.url }}">

settings.py から、私のメディア ルートは MEDIA_ROOT = '/home/user/work/djcode/media' です。

変数 {{ image.model_pic.url }} は html テンプレートを介して "chicks/blondie.jpg" を示していることに注意してください。したがって、私のイメージ オブジェクトは実際にテンプレートに適切に送信されていると思います。

誰でも私に手を貸してくれますか?それは本当に役に立ちます。

お時間をありがとうございました!

4

3 に答える 3

13

テンプレートの画像フィールドでの url 関数の使用が正しくありません{{ image.model_pic.url }}。問題を修正する必要があります。あなたはただ{{ MEDIA_URL }}ビットを落とす必要があります。

あなたのhtmlは-

<img src="{{ image.model_pic.url }}">

モデルでのファイルの使用に関するドキュメントをご覧ください。

それでも問題が解決しない場合は、静的ファイルの提供に問題がある可能性があります。python manage.py runserverdjango での静的ファイルの提供は、本番環境で行っているか、単にコマンドを使用しているかによって異なります。

開発中に (python manage.py runserver を使用して) メディア ファイルをサーバー化するには、settings.py で MEDIA_URL と MEDIA_ROOT が正しいことを確認してから、URL conf に次を追加します。

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = patterns('',
    # ... the rest of your URLconf goes here ...
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

本番環境でファイルを提供する方法については、ドキュメントを参照してください。

于 2013-02-03T18:43:07.590 に答える
1

{{MEDIA_URL}}またはを使用する必要があり{{STATIC_URL}}ます。どちらを選択するかは、サーバーでファイルを管理する方法によって異なります。使うなら{{STATIC_URL}}これが一番。

于 2013-02-03T18:34:42.647 に答える