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

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

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

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

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

解決済

Flaskを用いてwebページを作る際にページがweb上で表示されないエラー

harunouta
harunouta

総合スコア148

Flask

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

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

1回答

0リアクション

0クリップ

17432閲覧

投稿2017/11/26 11:24

編集2017/11/26 12:05

###前提・実現したいこと
Pythonウェブアプリケーションフレームワーク Flaskを使って、名前を入力するとそれを反映させてページを表示するwebサイトを作ろうとしています。
以下の記事を参考に進めています。
参考記事

###発生している問題・エラーメッセージ
Pythonファイルと同じフォルダ内にhtmlファイル(index.html, layout.html)を置き、Pythonのコードを走らせながら、参考記事の通りにhttp://localhost:5000/indexへアクセスしてみましたが、404NotFoundと表示されました。何が原因でこのような表示になっているかわからず、困っています。

Not Found The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.

###該当のソースコード

Python

# -*- coding: utf-8 -*- # Flask などの必要なライブラリをインポートする from flask import Flask, render_template, request, redirect, url_for import random # 自身の名称を app という名前でインスタンス化する app = Flask(__name__) # メッセージをランダムに表示するメソッド def picked_up(): messages = [ "こんにちは、あなたの名前を入力してください", "やあ!お名前は何ですか?", "あなたの名前を教えてね" ] # NumPy の random.choice で配列からランダムに取り出し return random.choice(messages) # ここからウェブアプリケーション用のルーティングを記述 # index にアクセスしたときの処理 @app.route('/') def index(): title = "ようこそ" message = picked_up() # index.html をレンダリングする return render_template('index.html', message=message, title=title) # /post にアクセスしたときの処理 @app.route('/post', methods=['GET', 'POST']) def post(): title = "こんにちは" if request.method == 'POST': # リクエストフォームから「名前」を取得して name = request.form['name'] # index.html をレンダリングする return render_template('index.html', name=name, title=title) else: # エラーなどでリダイレクトしたい場合はこんな感じで return redirect(url_for('index')) if __name__ == '__main__': app.debug = True # デバッグモード有効化 app.run(host='0.0.0.0') # どこからでもアクセス可能に

index.html

html

{% extends "layout.html" %} {% block content %} <!-- Form ================================================== --> <div class="form"> <div class="container"> <div class="row"> <div class="col-md-12"> <p class="lead"> {% if name %} こんにちは {{ name }} さん {% else %} {{ message }} {% endif %} </p> <form action="/post" method="post" class="form-inline"> <label for="name">名前</label> <input type="text" class="form-control" id="name" name="name" placeholder="Name"> <button type="submit" class="btn btn-default">送信する</button> </form> </div> </div> </div> </div> {% endblock %}

layout.html

html

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> {% if title %} <title>{{ title }}</title> {% else %} <title>Bootstrap 101 Template</title> {% endif %} <!-- Bootstrap --> <link href="/static/css/bootstrap.min.css" rel="stylesheet"> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> </head> <body> {% block content %}{% endblock %} <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> <script src="/static/js/jquery.min.js"></script> <!-- Include all compiled plugins (below), or include individual files as needed --> <script src="/static/js/bootstrap.min.js"></script> </body> </html>

###補足情報(言語/FW/ツール等のバージョンなど)
記事のPythonコードからnumpyを使わないコードに書き換えてあります。
ターミナルではPythonのコードは問題なく起動しています。

33#試してみたこと
http://localhost:5000/index」ではなく、
http://localhost:5000/」へアクセスしましたところ、

jinja2.exceptions.TemplateNotFound TemplateNotFound: index.html

と表示されるようになりました。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Flask

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

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