Python 3 – Flaskチュートリアル:ルート-Pythonチュートリアル

最新のWebアプリは、ルーティングという手法を使用しています。 これは、ユーザーがURLを覚えるのに役立ちます。 たとえば、/ booking.phpの代わりに/ booking /が表示されます。 /account.asp?id=1234/の代わりに、/ account / 1234 /が表示されます。

関連コース: Python Flask:Flaskを使用してWebアプリを作成する

ルート

フラスコルートの例

FlaskのルートはPython関数にマップされます。 ‘/’ルートという1つのルートをすでに作成しました。

@app.route("https://pythonbasics.org/")
def index():

ルート() デコレータ@app.route()、URLを関数にバインドします。

ルート/ helloが必要な場合は、次のようにhello_world()関数にバインドできます。

@app.route('/hello')
def hello_world():
return "hello world"

関数hello_world()の出力がブラウザーに表示されます。

フラスコルートパラメータ

ルートを作成するときにパラメータを使用できます。 パラメータは、次のような文字列(テキスト)にすることができます。 /product/cookie

それはこのルートと機能を持っているでしょう:

@app.route('/product/<name>')
def get_product(name):
return "The product is " + str(name)

それで、Flaskルートにパラメーターを渡すことができます、番号を渡すことができますか?

ここの例はルートを作成します /sale/<transaction_id>、ここで、transaction_idは数値です。

@app.route('/sale/<transaction_id>')
def get_sale(transaction_id=0):
return "The transaction is "+str(transaction_id)

フラスコルート複数の引数

あなたがしたい場合 複数のパラメータを持つフラスコルート それは可能です。 ルートについて /create/<first_name>/<last_name> あなたはこれを行うことができます:

@app.route('/create/<first_name>/<last_name>')
def create(first_name=None, last_name=None):
return 'Hello ' + first_name + ',' + last_name

フラスコルートポスト

FlaskはHTTPPOSTリクエストをサポートします。 これに慣れていない場合は、このコースをお勧めします。 Flaskでアプリを作成する

login.htmlという名前のテンプレートを作成します

1
2
3
4
5
6
7
8
9
<html>
<body>
<form action = "http://localhost:5000/login" method = "post">
<p>Username:</p>
<p><input type = "text" name = "name" /></p>
<p><input type = "submit" value = "submit" /></p>
</form>
</body>
</html>

以下のコードは、両方のタイプのHTTPリクエストをサポートしています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from flask import Flask
from flask import render_template
from flask import request

from flask import Flask, redirect, url_for, request
app = Flask(__name__)

@app.route('/dashboard/<name>')
def dashboard(name):
return 'welcome %s' % name

@app.route('/login',methods = ['POST', 'GET'])
def login():
if request.method == 'POST':
user = request.form['name']
return redirect(url_for('dashboard',name = user))
else:
user = request.args.get('name')
return render_template('login.html')

if __name__ == '__main__':
app.run(debug = True)

このようなエラーが発生した場合は、ルーティングが間違っています。

werkzeug.routing.BuildError
werkzeug.routing.BuildError: Could not build url for endpoint 'dashboard'. Did you forget to specify values ['name']?

例をダウンロード

Hope this helps!

Source link