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

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

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

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

3244閲覧

CSSが適用されない

ke622ken

総合スコア15

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2017/10/30 02:53

CSSが適用されません

初心者です.
python + flaskでWebアプリケーションを作っています.
その中で自分が使いたいcssファイルを組み合わせようと思っているのですが,CSSが適用されません.
なぜでしょうか?
今の環境の階層は以下の通りです.
static
-mystyle.css
templates
-login.html

###エラーメッセージ
エラーメッセージは出ていませんが,Chromeのデベロッパーツールにて警告として以下のメッセージが出ています.

Failed to load response data Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://127.0.0.1:8080/login".

###ソースコード
login.html

html

1 <head> 2 (一部省略) 3 <!-- Bootstrap CDN --> 4 <link rel = "stylesheet" href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> 5 <link rel = "stylesheet" href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css"> 6 <link rel = "stylesheet" href = "../static/mystyle.css"> 7 </head> 8 <body> 9 <a href = "#" class = "square_btn">BUTTON</a> 10 (一部省略) 11 <script src = "https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 12 <script src = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> 13 </body>

mystyle.css

css

1.square_btn { 2 display: inline-block; 3 padding: 0.3em 1em; 4 text-decoration: none; 5 color: #67c5ff; 6 border: solid 2px #67c5ff; 7 border-radius: 3px; 8 transition: .4s; 9}

###試したこと
ChromeやPCの再起動は試しましたが.ダメでした.

###補足情報(言語/FW/ツール等のバージョンなど)
python3を使っています.

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

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

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

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

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

guest

回答2

0

ベストアンサー

python + flask というのは全く分かりませんので、それとは直接関係ない一般的な話ですが・・・

外部 CSS ファイルを使わないで、head 内にインラインで .square_btn を書いたら期待通りスタイルは適用されるのでしょうか?

であれば、考えられるのは、

(1) パスが間違っている。すなわち、以下の href で指定される場所に CSS ファイル mystyle.css が存在しない。(yuki-saito さんが指摘されていることと同じ)

<link rel = "stylesheet" href = "../static/mystyle.css">

(2) ブラウザにキャッシュされた CSS ファイルが使われている。以前のアクセスでブラウザに mystyle.css がキャッシュされると、その後でサーバー側でファイルを書き換えて .square_btn を追加したり、修正したりしても、ブラウザにはその追加、修正は反映されません。

・・・ぐらいです。

上記 (1) については href="/static/mystyle.css" でもダメだったとのことですが、Web サイトが http://127.0.0.1:8080 の場合、そのパスは http://127.0.0.1:8080/static/mystyle.css のように解決されます。そのパスはホントに間違いないですか?

試しにブラウザのアドレスバーに http://127.0.0.1:8080/static/mystyle.css と入力して CSS ファイルを要求してみてはいかがですか。パスが正しければ CSS ファイルの内容が表示できるはずです。

投稿2017/10/30 04:01

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

ke622ken

2017/10/30 04:20

詳細なご回答ありがとうございます. head内に記載した場合は,スタイルは適用されました. ですのでSurferOnWwwさんのおっしゃる通り,パスが誤っているようです. http://127.0.0.1:8080/static/mystyle.cssにアクセスしたのですが,CSSの内容が表示されずに http://127.0.0.1:8080/loginに飛ぶだけでした. 現在置いている階層は既に説明している通りですが,パス指定のどの部分が誤っているのでしょうか...?
退会済みユーザー

退会済みユーザー

2017/10/30 04:44

python + flask というのは全く分かりませんのでハズレかもしれませんが、http://127.0.0.1:8080/static/mystyle.css にアクセスすると http://127.0.0.1:8080/login にリダイレクトされるというのは、static/mystyle.css にアクセス制限がかかっていてログイン済みのユーザー以外はアクセスできないということのように見えます。 Fiddler などのツールを使って、そのあたりをチェックしてみてはいかがですか?
ke622ken

2017/10/30 05:01

解決しました! リダイレクトしていることが問題だったようです. 本当にありがとうございました.
guest

0

原因はパスが違うからだと思います。

index.htmlから見て../static/mystyle.cssとしているのだと思いますが
ChromeのデベロッパーツールのNetworkタブを見ても分かるように
CSSはindex.htmlが読まれてから指定されているパスにGETの通信が走ります。

python側に合わせてパスを修正すればGETできるようになるかと思います。

投稿2017/10/30 03:01

yuki-saito

総合スコア928

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

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

ke622ken

2017/10/30 03:10

ご回答ありがとうございます. 「python側に合わせてパスを修正すれば」というのは具体的にどういうことでしょうか? main.pyと同じ階層にstaticとtemplatesディレクトリがそれぞれあるのですが・・・
yuki-saito

2017/10/30 03:24 編集

/static/mystyle.css で読み込めるのではないでしょうか。
ke622ken

2017/10/30 03:25

試してみたのですが,結果は変わりませんでした.
yuki-saito

2017/10/30 03:43

エラー内容を良く見てみたら「Resource interpreted as Stylesheet but transferred with MIME type text/html」と言っていますね。 あまり詳しくなくて恐縮なのですが、type="text/css" 付けたらできるとか・・・? <link rel = "stylesheet" type = "text/css" href = "../static/mystyle.css">
ke622ken

2017/10/30 03:48

結果は変わりませんでした. type指定は任意なので結果には影響しないと思います.
yuki-saito

2017/10/30 03:55 編集

まぁそうですよね。 そうだとは思っているのですが、MIMEタイプのエラーが出ているのでその辺りを確認しながら試していくしかないかと思いまして・・・ こちらからだと必要な情報が見れないので、サーバの構成やプログラム、ChromeのデベロッパーツールのNetworkタブの結果やコンソール・エラーの内容も含めて載せてもらった方が良いかと思います。
ke622ken

2017/10/30 05:01

解決しました. 本当にありがとうございました.
yuki-saito

2017/10/30 05:03

それはよかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問