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

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

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

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

Python

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

Q&A

解決済

3回答

344閲覧

pythonのflaskについて

_ts

総合スコア17

Flask

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

Python

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

0グッド

0クリップ

投稿2019/03/28 04:02

flaskを使うとき、

python

1@app.route('/') 2def function(): 3 ...

と書きますよね。

これをターミナルで呼び出したとき、@app.route('/')の下にある関数は自動で呼び出されるのですか?
また、下にあるのが関数ではなくクラスだった場合、クラス内のすべての関数が自動で呼び出されるのですか?

自分は今、

python

1 2from flask import Flask 3 4app = Flask(__name__) 5 6 7@app.route("/") 8def p(): 9 print("flask") 10 11 12if __name__ == "__main__": 13 app.run()

というコードを書き、コマンドプロンプトで

python flask_test.py(←ファイル名です)

と打って実行したのですが、flaskという文字は出力されません。

本当に基礎的な部分の質問かと思いますが、ご回答宜しくお願い致します。

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

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

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

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

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

guest

回答3

0

ベストアンサー

これをターミナルで呼び出したとき、@app.route('/')の下にある関数は自動で呼び出されるのですか?

いいえ、「ターミナルで呼び出したとき」ではないです。ルーティング規則にマッチするURLへのリクエストがあったときに呼び出されます。

また、下にあるのが関数ではなくクラスだった場合、クラス内のすべての関数が自動で呼び出されるのですか?

試したことはないですが、クラスデコレータとして書かれていないでしょうから、上手く動作しないのではないかな、と思います。コンストラクタは呼ばれそうな気がしますが。

flaskという文字は出力されません。

なにが表示されているかご提示ください。404エラーとかでしょうか?
そうだとするならば、コードでエラーが起きているか、ルーティングに間違いがあるか、URLに間違いがあるか、だと思います。

投稿2019/03/28 04:38

Lhankor_Mhy

総合スコア36074

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

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

_ts

2019/03/28 05:06

申し訳ありません、情報不足でした。 エラーなどはなく、正常に動作しています。 * Serving Flask app "flask_test" (lazy loading) * Environment: production WARNING: Do not use the development server in a production environment. Use a production WSGI server instead. * Debug mode: off 上のご回答で、 「ターミナルで呼び出したときではなく、ルーティング規則にマッチするURLへのリクエストがあったときに呼び出される」とありますが、ターミナルでの呼び出しは何に使うものですか? ご回答のほどよろしくお願いいたします。
Lhankor_Mhy

2019/03/28 05:15

アプリケーションを走らせるためのものです。 アプリケーションが走っていなければ、正しいURLでアクセスしても応答されません。
_ts

2019/03/28 05:40

理解しました!ありがとうございます!
_ts

2019/03/28 05:44

すみません、ブラウザで該当URLにアクセスしたのですが、、、 Internal Server Error The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application. と表示されます、、、 もし原因がお分かりでしたら、教えていただきたいです。 宜しくお願い致します。
Lhankor_Mhy

2019/03/28 06:51

戻り値を返していないことが原因でしょうか……?
guest

0

@app.route('/')の下にある関数は自動で呼び出されるのですか?

http://127.0.0.1:5000/に(ポート番号は違うかもしれませんが)アクセスすれば呼び出されます。

@app.route("/")は「このアプリは、/(URLのルートディレクトリ)にアクセスが来たときにこの関数を呼び出して表示するものを受け取りますよ」という登録をしているだけですね。あ、動かしたければ文字列を返すようにしてあげてください(その途中で何をやるかは勝手。printしてどうなるかは検証していませんが、たぶんそのままstdoutに出てくるんじゃないかな?)。

公式ではないですがわかりやすい解説があったので読んでみてください。

https://methane.github.io/flask-handson/start.html

投稿2019/03/28 04:20

hayataka2049

総合スコア30933

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

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

_ts

2019/03/28 05:09

ありがとうございます!
guest

0

これをターミナルで呼び出したとき、@app.route('/')の下にある関数は自動で呼び出されるのですか?

いいえ、Flask アプリケーションを起動し、ブラウザなどでアクセスされたときに実行されます。

一度、Flask 公式マニュアルの「クイックスタート」を読むことをおすすめします。
https://a2c.bitbucket.io/flask/quickstart.html

投稿2019/03/28 04:18

nskydiving

総合スコア6500

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

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

_ts

2019/03/28 05:09

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問