画像が表示されないです。
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ファイルを指定している方法が間違っているから表示されないのだと思いましたが、そうではないのでしょうか?
どのように直せば良いのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。