質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1453閲覧

なぜ画像が表示されないか

退会済みユーザー

退会済みユーザー

総合スコア0

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/01/03 08:24

画像が表示されないです。
models.pyに

class POST(models.Model): title = models.CharField(max_length=100) image = models.ImageField(upload_to='images/', blank=True, null=True) created_at = models.DateTimeField(auto_now_add=True)

と書き、 views.pyに

def top(request): content = POST.objects.order_by('-created_at')[:5] page = _get_page(blog_content, request.GET.get('page')) return render(request, 'top.html',{'content':content,"page":page}) def _get_page(list_, page_no, count=1): paginator = Paginator(list_, count) try: page = paginator.page(page_no) except (EmptyPage, PageNotAnInteger): page = paginator.page(1) return page

と書き、 top.htmlに

<div> {% for item in page %} <div> <h2>{{ item.title }}</h2> <img src="{{ item.image }}"/> </div> {% endfor %} </div>

と書き、 settings.pyに

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) MEDIA_ROOT = os.path.join(BASE_DIR, 'image') MEDIA_URL = '/images/' SETTINGS_PATH = os.path.normpath(os.path.dirname(__file__)) TEMPLATE_DIRS = ( os.path.join(SETTINGS_PATH, 'templates'), ) STATIC_URL = '/static/' IMAGE_URL = '/images/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, "images"), '/images/', ]

と書きました。ブラウザでtop.htmlを呼び出した時、<h2>{{ item.title }}</h2>は表示されましたが、<img src="{{ item.image }}"/> は表示されませんでした。グーグルクロームのソースを表示を押して、<img src="/images/photo.jpg"/> の部分をクリックすると404エラーが出ました。
ディレクトリの構造は

-mysite(親アプリ) -polls(子アプリ) -templates -top.html -views.py -models.py -mysite -settings.py -image -images -photo1.png

のようになっています。モデルにはちゃんと画像が登録されています。

<div> {% for item in page %} <div> <h2>{{ item.title }}</h2> <img src="../image/{{ item.image }}"/> </div> {% endfor %} </div>

と書いても表示されず

<img src="./image/{{ item.image }}"/>

と書いても表示されませんでした。imagesファイルを指定している方法が間違っているから表示されないのだと思いましたが、そうではないのでしょうか?
どのように直せば良いのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

静的ファイルを表示したかったら、
apacheとかnginxとかその他の方法で、
静的ファイル用にhttpサーバ立てるか、
もしくは、/image/*.jpgのURLに対して、
imageを返すためのurls.pyとviews.pyを設定する必要があります。
ちなみに前者の方がパフォーマンスがいいはずだし、簡単です。

投稿2018/01/04 15:19

kokardy

総合スコア781

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問