企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# Flask 教程:路由 > 原文: [https://pythonbasics.org/Flask-Tutorial-Routes/](https://pythonbasics.org/Flask-Tutorial-Routes/) 现代的 Web 应用程序使用一种称为路由的技术。 这可以帮助用户记住 URL。 例如,他们看到的不是`/booking.php`,而是`/booking/`。 他们会看到`/account/1234/`,而不是`/account.asp?id=1234/`。 ## 路由 ### Flask 路由示例 Flask 中的路由映射到 Python 函数。 您已经创建了一条路由,即`/`路由: ```py @app.route('/') def index(): ``` `route()`装饰器`@app.route()`将 URL 绑定到函数。 如果需要路由`/hello`,可以将其绑定到`hello_world()`函数,如下所示: ```py @app.route('/hello') def hello_world(): return "hello world" ``` 函数`hello_world()`的输出显示在浏览器中。 ### Flask 路径参数 创建路由时可以使用参数。 参数可以是这样的字符串(文本):`/product/cookie`。 这将具有以下路由和函数: ```py @app.route('/product/<name>') def get_product(name): return "The product is " + str(name) ``` 因此,您可以将参数传递给 Flask 路由,可以传递数字吗? 此处的示例创建路由`/sale/<transaction_id>`,其中`transaction_id`是数字。 ```py @app.route('/sale/<transaction_id>') def get_sale(transaction_id=0): return "The transaction is "+str(transaction_id) ``` ### Flask 多参数路由 如果您希望 Flask 路由具有多个参数,则可以这样做。 对于路由`/create/<first_name>/<last_name>`,您可以执行以下操作: ```py @app.route('/create/<first_name>/<last_name>') def create(first_name=None, last_name=None): return 'Hello ' + first_name + ',' + last_name ``` ### Flask POST 路由 Flask 支持 HTTP POST 请求。 如果您对此不熟悉,我建议您学习此课程:[使用 Flask](https://gum.co/IMzBy) 创建应用。 创建一个名为`login.html`的模板 ```py <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 请求。 ```py 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) ``` 如果收到这样的错误,则路由错误: ```py werkzeug.routing.BuildError werkzeug.routing.BuildError: Could not build url for endpoint 'dashboard'. Did you forget to specify values ['name']? ``` [**下载示例**](https://gum.co/IMzBy)