English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Flask 変数規則

ルール引数に可変部分を追加することで、URLを動的に構築できます。この可変部分は<variable-name>。これがルールに関連付けられた関数にキーワード引数として渡されます。

以下の例では、route()デコレータのルール引数にURLに追加されるオプションが含まれています /helloの<name>変数部分。したがって、ブラウザでURLにアクセスするときは、http://localhost:5000/hello/w3codebox、それに「w3codebox'がhello()関数に引数として提供されます。

以下のコードを参照してください -

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ja.oldtoolbag.com
# Date : 2020-08-08
from flask import Flask
 app = Flask(__name__)
 @app.route('/hello/<name'>
 def hello_name(name):
     return 'Hello %s!' % name
 if __name__ == '__main__':
     app.run(debug=True)

上記のスクリプトをファイル「hello.py」に保存し、Python shellから実行します。

次に、ブラウザを開き、URLを入力してください => http://localhost:5000/hello/w3codebox。ブラウザで「Hello w」を見ることができます3codebox

デフォルトの文字列変数部分に加えて、以下のコンバータ構造規則を使用できます -

番号コンバータ説明
1int整数を受け入れます
2float浮動小数点数のために
3pathディレクトリ区切り文字としてのスラッシュ記号('/')を受け入れます/)

以下のコードでは、すべてのこれらの構造関数を使用しています。

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ja.oldtoolbag.com
# Date : 2020-08-08
from flask import Flask
 app = Flask(__name__)
 @app.route('/blog/<int:postID'>
 def show_blog(postID):
     return 'Blog Number %d' % postID
 @app.route('/rev/<float:revNo'>
 def revision(revNo):
     return 'Revision Number %f' % revNo
 if __name__ == '__main__':
     app.run()

Python Shellで上記のコードを実行します。URLにアクセスしてブラウザで確認 => http:// localhost:5000/blog/11。

指定された数字値が:show_blog()関数の引数として使用されます。ブラウザで以下の出力が表示されます -

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ja.oldtoolbag.com
# Date : 2020-08-08
ブログ番号 11

このURLをブラウザに入力してください - http://localhost:5000/rev/1.1

revision()関数は浮動小数点数を引数として受け取ります。 以下の結果がブラウザのウィンドウに表示されます -

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ja.oldtoolbag.com
# Date : 2020-08-08
リビジョン番号 1.100000

FlaskのURLルールはWerkzeugのルーティングモジュールに基づいています。 これにより、生成されたURLがユニークで、Apacheが制定した先例に基づいています。

以下のスクリプトで定義されたルールを考える -

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ja.oldtoolbag.com
# Date : 2020-08-08
from flask import Flask
 app = Flask(__name__)
 @app.route('/flask
 def hello_flask():
     return 'Hello Flask'
 @app.route('/python/)
 def hello_python():
     return 'Hello Python'
 if __name__ == '__main__':
     app.run()

二つのルールは似ていますが、第二のルールでは、末尾のスラッシュ(/)。 したがって、規範的なURLになりました。 したがって、/pythonまたは/python/同じ出力を返します。 ただし、最初のルールの情况下、URL:/flask/引き起こす404 Not Foundページ。