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

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

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

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

Python

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

HTML

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

Q&A

解決済

1回答

768閲覧

htmlのページ自動移動について

aoiriyu0406

総合スコア54

Flask

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

Python

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

HTML

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

0グッド

0クリップ

投稿2022/02/16 03:12

result.html

1<!DOCTYPE html> 2<html lang="ja"> 3 <head> 4 <meta charset="UTF-8" http-equiv="Refresh" content="3;URL=kekka.html"> 5 <title>じゃんけん結果</title> 6 <link rel="stylesheet" href ="../static/style2.css"> 7 </head> 8 9 10 <body> 11 <ul><h5> 12 5秒たっても画面が切り替わらい時はうーぱーをタッチしてね<br> 13 <a href="./kekka.html"><img src="../static/img/upa.png" alt="結果を見る"></a> 14 </h5></ul> 15 <article> 16 <h1>出した手は・・・</h1> 17 あなたの手:{{ my }}         敵の手:{{ cpu }} 18 <form action="kekka" method="POST"> 19 {% if my=='グー' and cpu=='グー' %} 20 <p><img src="../static/img/gu.png" alt="グー">  VS  <img src="../static/img/gu.png" alt="グー"></p> 21 {% elif my=='グー' and cpu=='チョキ' %} 22 <p><img src="../static/img/gu.png" alt="グー">  VS  <img src="../static/img/ch.png" alt="チョキ"></p> 23 {% elif my=='グー' and cpu=='パー' %} 24 <p><img src="../static/img/gu.png" alt="グー">  VS  <img src="../static/img/pa.png" alt="パー"></p> 25 26 {% elif my=='チョキ' and cpu=='グー' %} 27 <p><img src="../static/img/ch.png" alt="チョキ">  VS  <img src="../static/img/gu.png" alt="グー"></p> 28 {% elif my=='チョキ' and cpu=='チョキ' %} 29 <p><img src="../static/img/ch.png" alt="チョキ">  VS  <img src="../static/img/ch.png" alt="チョキ"></p> 30 {% elif my=='チョキ' and cpu=='パー' %} 31 <p><img src="../static/img/ch.png" alt="チョキ">  VS  <img src="../static/img/pa.png" alt="パー"></p> 32 33 {% elif my=='パー' and cpu=='グー' %} 34 <p><img src="../static/img/pa.png" alt="パー">  VS  <img src="../static/img/gu.png" alt="グー"></p> 35 {% elif my=='パー' and cpu=='チョキ' %} 36 <p><img src="../static/img/pa.png" alt="パー">  VS  <img src="../static/img/ch.png" alt="チョキ"></p> 37 {% elif my=='パー' and cpu=='パー' %} 38 <p><img src="../static/img/pa.png" alt="パー">  VS  <img src="../static/img/pa.png" alt="パー"></p> 39 {% endif %} 40 </form> 41 </article> 42 </body> 43</html>

app.py

1@app.route('/result/<hand>') 2def result(hand): 3 hands=['グー', 'チョキ', 'パー'] 4 c=randint(0,2) 5 cpu=hands[c] 6 if hand=='gu' or hand=='ch' or hand=='pa': 7 session.permanent=True 8 session['hand']=hand 9 my='' 10 if hand=='gu': 11 my=hands[0] 12 elif hand=='ch': 13 my=hands[1] 14 elif hand=='pa': 15 my=hands[2] 16 return render_template('result.html', my=my, cpu=cpu) 17 18@app.route('/kekka') 19def kekka(): 20 myhand=session['hand'] 21 22 return render_template('kekka.html', myhand=myhand)

↑一部のみをはっています。
result.htmlのmetaで、http-equiv="Refresh" content="3;URL=kekka.html"で、3秒後に自動で飛ぶようにしているのですが、同じファイル・同じ高さにあるhtmlに飛ぼうとしたら↓のエラーが出てしまいます。

TypeError: The view function for 'result' did not return a valid response. The function either returned None or ended without a return statement.

何が原因なのでしょうか?
どこでひっかかっているのかがわからず・・。

教えていただけますとありがたいです。

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

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

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

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

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

m.ts10806

2022/02/16 03:14

フレームワークのHTMLってそのファイルはViewファイルでしかなくてそのファイルでURLアクセス可能というわけではないと思うのですが、そのあたりはどういう構成で作られているのでしょうか。 実際にkekka.htmlというURLは存在してますか?
guest

回答1

0

ベストアンサー

FlaskはおろかPythonも全くですが、Webフレームワークと言う観点から同じと思いますので(コードは何となく読める)

指定したリダイレクト(meta のリフレッシュ)は「ファイルへのジャンプ」ではなくあくまで「httpアクセス可能なWebページへのリダイレクト」になります。
つまり、httpアクセス可能=URLとして存在するルーティング でなければ意味がありません。

コードからするとkekka.htmlは/kekkaというルーティングでアクセスしたときに呼んでいるViewファイルのようですので、アクセス可能なURLとしては/kekkaではないでしょうか。
※このあたり、フォーム送信とかAjaxとかにも関係します。ファイル単位ではなく有効なURLから考えましょう。

投稿2022/02/16 03:20

m.ts10806

総合スコア80888

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

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

aoiriyu0406

2022/02/16 03:31

教えていただきありがとうございます。 /kekkaにするとちゃんと飛んでくれました!
m.ts10806

2022/02/16 04:31

MVCのようですし、そのあたりの実装の流れとか構造とかドキュメントベースでおさえたほうが良いと思います。 基本を抑えておけば言語やフレームワークが変わっても学習コストは格段に減ります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問