2017-11-13 8 views
1

私はこの問題に数日間苦労しており、それを自分で解決することはできません。私はブログサイトに取り組んでいます。私は私のモデルでのImageFieldを持ってDjangoビューの画像パスは、MEDIA_URLの代わりにディレクトリに相対的です。

domain.com/blog/specificpost/ 

:ポストビューはこのようなURLでレンダリングされます。画像は正しくアップロードされ、正しいURLで画像をアドレス指定することができます。私settings.py

domain.com/media/asset.jpg 

私は、メディアパスを定義しています。管理者から画像ファイルにアクセスすると、正常に動作します。

MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 
MEDIA_URL = '/media/' 

投稿の表示をレンダリングするとき、イメージパスはDOMで正しく表示されません。これは、次のとおりです。

domain.com/blog/media/asset.jpg 

それは次のようになります。

私が追加されている私の URLPATTERN
domain.com/media/asset.jpg 

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

とurls.py.し、関連の輸入を追加しました私はdevelopmentの間にこのコードがドメインルートのファイルを提供すると考えています。

私はすべての解決策を試しましたが、hereの画像URLはまだディレクトリに対して相対的に表示されます。正しいパスで私を設定するための助けが役に立ちます、ありがとうございます。

ポストテンプレートは:

{% extends "base.html" %} 

{% block journal_entry %} 
    <main class="content"> 
     <section class="photo"> 
      <img src="{{ object.image }}"> 
     </section> 
     <section class="entry"> 
      <section class="entry-content"> 
       {{ object.body|linebreaks }} 
      </section> 
      <section class="entry-meta"> 
       {{ object.created }}<span class="user-options"> • <a href="#">Delete</a></span> 
      </section> 
     </section> 
    </main> 
{% endblock %} 
+1

ビューのテンプレートを追加できますか? – MrName

+0

@ MrName追加、ありがとう。 –

答えて

2

テンプレートに{{ object.image.url }}代わりの{{ object.image }}を使用してみてください。

+0

これは完全に機能しました。あなたがImageFieldの出力に特有でなければならないことに気付かなかった。私はそれが単純な間違いになることを知っていた、私は行方不明に私の頭を置くことができなかった。私は助けていただきありがとうございます。 –

+1

URLの属性ではなく、フィールド自体を参照するときに起こることは、 'url'フィールドではなく相対URIであるクラスの' __str__'メソッドを使用するということです完全なURLです。 – MrName

関連する問題