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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

4回答

1773閲覧

htmlで画像を表示されるものとされないものがある。

M_chun

総合スコア10

Django

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/01/17 06:27

前提・実現したいこと

・プログラミング初心者ですので非常に
初歩的なミスかもしれません。

・単に画像を表示させるだけなのですが
うまくいきません。理由もわかりません。

・django2を使ったアプリケーションで
nginxを使ってサーバーにアップしてます。

*( 問題は反映される画像とされない画像があり、されない画像も開発環境な
ら表示される。 )

こういう感じです。
fileA - 開発環境で表示される。本番環境でも表示される
fileB - 開発環境で表示される。本番環境で表示されない。
いろいろ試しましたがfileA以外は表示されません。sizeを変えても
容量を変えても同様です。ファイルの種類はjpgです。

*試したこと

画像を表示するためhtml上に

<div class= "contents" style="background:url(/static/app_name/**image**)">; background-size:cover;> ............... </div>

現状やろうとしたのはこれなのですが、問題部分がわからなかったので、

<img src="/static/app_name/**image**" class="img-fluid" alt="Responsive image"> とか {% load static %} <img src={% '/static/app_name/**image**' %} style='auto'> とか <img src='/static/app_name/**image**' alt= 'Response'>

という風にいろいろと試したのですが、どれも同様の現象です。

原因はテンプレートか画像ファイルかと勝手に思ってViewsやsettingsの
コードは載せていません。
どなたか思い当たる節のあるかた教えていただけないでしょうか?

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

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

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

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

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

azuapricot

2019/01/17 06:35

記述的にファイルパスが原因な気がします。 スクリーンショットでもなんでもいいので質問者さんの、 画像ファイルやhtmlなどのフォルダ階層を教えてください。
M_chun

2019/01/17 08:51

<img src="/static/blog/dog_1.jpg" class="img-fluid" alt="Responsive image"> こちらが表示されるコードとファイルです。 <img src="/static/blog/dog_3.jpg" class="img-fluid" alt="Responsive image"> こちらが表示されないコードとファイルです。 Bob_100.jpg dog-2785074_960_720.jpg hey_dog.jpg Bob_3.jpg dog_1.jpg taro.jpg こちらがディレクトリ内のファイルです。 このファイルはすべて開発環境では表示されます。 入力ミスもあると思い、ファイルの上書きも、コードを削除して、 すべてコピーも試しました。 home/djangoproject/app_name/static/app_name/jpg_failes これがファイルの置いてあるディレクトリへのpathです。 path以外は書いてあるものそのままコピペしてます。
M_chun

2019/01/17 08:57

htmlは home/djangoproject/app_name/templates/app_name/files.html です。書き忘れてすいません。
yoshinavi

2019/01/19 08:28

アップしたサーバーの指定場所に、実際に画像があるかどうかは確認済ですか? また、CSSの設定によっては高さ等が確保されず、表示されない場合も考えられますので、classを付与せず<img>のみで表示されますか? 症状が再現されるHTML・CSSコードやURL等を提示されると良いかと思います。
M_chun

2019/01/20 12:15

プログラミングの知識が乏しく確認の仕方がわかってないかもしれません。 上のディレクトリへのパスはサーバーでlsコマンドで確認時にアンカーポイントのディレクトリ内にファイルがあることを確認できているパスですので、置き場所が間違っているとすれば、dog_3.jpgのファイルがみれない= dog_1.jpgのファイルもみれないはずだと思うのですが現状はdog_1は見れるが dog_3.jpgを含む他はすべて表示されないので、jpgのファイルを小さいサイズのものや容量の小さいものなどを用意してみたのですがすべて表示されない。という風に確認しています。こんな原始的な方法しか思いつかないのですが何かいい方法がありますでしょうか? 今は単調なページに画像が添付できるかどうかを試し始めたところなので上のようにシンプルに 画像を表示させるコードしか書いていません。なので、cssファイルも画像に関わるhtmlもこれ以外ないです。
M_chun

2019/01/20 14:02

すいません、サーバーの階層をツリー構造で表示できるのしりませんでした。 さっきわかったので遅いですが貼ります。間違ってるところご教授いただければ幸いです。 /home/jack/project/blog |--__init__.py |--__pycache__ | |--__init__.cpython-36.pyc | |--admin.cpython-36.pyc | |--apps.cpython-36.pyc | |--context_processors.cpython-36.pyc | |--forms.cpython-36.pyc | |--models.cpython-36.pyc | |--urls.cpython-36.pyc | |--views.cpython-36.pyc |--admin.py |--apps.py |--context_processors.py |--forms.py |--migrations | |--0001_initial.py | |--0002_comment.py | |--__init__.py | |--__pycache__ | | |--0001_initial.cpython-36.pyc | | |--0002_comment.cpython-36.pyc | | |--__init__.cpython-36.pyc |--models.py |--static | |--blog | | |--Bob_100.jpg | | |--Bob_3.jpg | | |--dog-2785074_960_720.jpg | | |--dog_1.jpg | | |--dog_15.jpg |--templates | |--admin | | |--base_site.html | |--blog | | |--base.html | | |--comment_form.html | | |--page.html | | |--post_detail.html | | |--post_list.html |--templatetags | |--__pycache__ | | |--mytag.cpython-36.pyc | |--mytag.py |--tests.py |--urls.py |--views.py
yoshinavi

2019/01/20 15:49

「Bob_3.jpg」はありますが、「dog_3.jpg」は無いように見えるのですが、記述間違いでしょうか?
M_chun

2019/01/20 23:09

すいません、ややこしいですがtree表示したときには、またファイルを抜いたり 入れたりしているので、前のコメントと少し違います。tree表示する前のディレクトリ内の ファイルはこれでした。 Bob_100.jpg dog-2785074_960_720.jpg hey_dog.jpg Bob_3.jpg dog_1.jpg taro.jpg ただ、その後にこのフォルダから dog_1.jpgを抜いたところ、まだ画像が表示されています。 なので、どこから読み込んでいるのかわからないのですが、dog_1.jpgだけは、あのパスで どこか別のどこかから読み込んでいるみたいです。やはり単純にファイルの置き場所が悪いかパスミスだと思います。お騒がせしてすみませんでした。 ただ、テスト環境だとこの仕様とコードで表示できるので、本番環境との違いが何なのかよくわかりません。とりあえず単純に表示するにあたって、上の構造やコードに問題がありましたら、ご指摘、ご教授いただければ修正したいです。 確認不足で質問投げかけてすいませんでした。
M_chun

2019/01/20 23:14

何度もすいません、dog_3とBob_3は記述間違いです。
yoshinavi

2019/01/21 08:44

>dog_1.jpgを抜いたところ、まだ画像が表示されています。 → 「キャッシュクリア」はされていますか?
M_chun

2019/01/21 12:14

対応ありがとうございます。 キャッシュクリアをしらなかったのでしてなかったです。 一応調べてやってみたのですが、あってるかどうかわからないです。 自分でわかる範囲の情報です。 <キャッシュクリア前の情報>    total used free shared buff/cache available Mem: 992 114 273 41  604 613 Swap: 4095 69 4026 <キャッシュクリア後の情報>   total used free shared buff/cache available Mem: 992 120 765 41  105 716 Swap: 4095 69 4026 減ってるので、できたのかなと判断しました。 dog_1.jpgを抜いた状態からキャッシュクリア してみましたがブラウザの情報は変わってないです。
M_chun

2019/01/21 12:17

すいません、情報の部分がなんか見にくくなってしまいました。 buff/cacheの部分は (604) ~ (105) になりました。
yoshinavi

2019/01/21 13:16

閲覧しているブラウザのキャッシュはクリア済でしょうか?
M_chun

2019/01/22 10:38

ブラウザのキャッシュはできています。 前のコメントの分のデータは ページキャッシュとslabキャッシュです。
guest

回答4

0

srcにはファイルへのパスを拡張子まで含めて書くものなので、今の書き方が本当にそのままだとどの環境でも画像は表示されないと思います。

投稿2019/01/17 06:29

m.ts10806

総合スコア80850

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

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

M_chun

2019/01/17 06:33

すいません、書き方が悪かったです。 ファイル名は image.jpg という風にはいってます。
m.ts10806

2019/01/17 06:35

質問を編集してください。 表示されないということは、パスが間違っている(そこに置いていないことも含めて)か、ファイルが破損しているかのどちらかです。前者がよくあります。
guest

0

可能性の高そうな順に

  1. サイトルートパスからの画像フォルダの場所が違う

(テストは/static/app_name/imageが本番では/imageみたいな)

  1. サイズやエンコードの問題で画像のアップロードに失敗している
  2. 大文字小文字を区別するかしないかが本番とテストのサーバーで違う
  3. 濁点や発音記号を含んだファイル名がいて本番とテストで扱いが違う
  4. アップロード時に画像ファイル名に補正がかかっている(半角スペースが_になるとか)

投稿2019/01/17 07:55

KazuhiroHatano

総合スコア7804

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

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

M_chun

2019/01/17 11:15

(1) テストで作ったものを本番にアップロードしてるので、そうなる可能性はないようにおもいます。一応確認してますがlsコマンドで表示されるファイルとHTMLの入力パスは一致しています。 (2)サイズは同じものや小さいものを用意してためしました。エンコードも確認しましたが問題なさそうです。例えばファイルをサーバー送信したときに壊れていてそれを確認する方法とかあるのでしょうか? (3),(4),(5) dog_1とdog_3という風に試してますが、1は表示される、3は表示されないなので 理由がわからず困ってます。テストではすべて表示されます。
guest

0

単純にファイルを置いてないか、場所を間違っているんじゃないですか?
http://example.com/static/app_name/image/fileA
とか直接URL指定して、ちゃんとアクセス出来るか確認して下さい。

投稿2019/01/17 06:33

kunai

総合スコア5405

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

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

M_chun

2019/01/17 11:20

すいません、そんな方法があるのはしらなかったです。それはブラウザからサイトURL/ サーバーのホームからファイルへのpathでいいのでしょうか?やってみたのですが、アクセスできなかったです。
guest

0

自己解決

解決しました。
結局、詳しいことはわからないのですが、collectstaticコマンドで
staticファイルを更新する度、var/www配下に集めないとだめみたいなのですが
その作業をはじめにやったっきりでした。

投稿2019/01/28 05:33

M_chun

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問