本文详细介绍了在Python Flask框架中如何使用路由来构建Web应用。通过示例代码,展示了如何将函数绑定到URL,以及如何定义路由的请求方法。文章还深入讲解了路由的变量规则,包括如何使用正则命名和转换器来处理不同类型的数据。掌握这些知识点,将有助于你更加高效地开发Flask应用。
使用route()
装饰器将函数绑定到 URL。
所谓路由,其实就是域名或者ip斜杠/
后面的内容访问。用户申请访问URL,然后服务器返回下面的内容到浏览器上。
from flask import Flask
app = Flask(__name__)
@app.route("/hello")
def hello_world():
return "<p>Hello, World!</p>"
if __name__ == "__main__":
app.run()
定义路由的三个细节
methods参数主要有两种,分别为get和post。get请求一般是去取获取数据,post请求一般是去提交数据。。
from flask import Flask
app = Flask(__name__)
# /hello 既可以用 GET 方法访问,也可以用 POST 方法访问
@app.route("/hello", methods=["GET", "POST"])
def hello_world():
return "<p>Hello, World!</p>"
# /heihei 只能用 POST 方法访问
@app.route("/heihei", methods=["POST"])
def hei():
return "<h1>HEIHEI</h1>"
if __name__ == "__main__":
app.run()
在Flask中,可以通过<>
来进行正则命名。
你可以通过使用 <variable_name>
标记部分来向 URL 添加变量部分。然后,你的函数将接收 <variable_name>
作为关键字参数。
from flask import Flask
app = Flask(__name__)
@app.route("/user/<name>")
def user(name):
return f"Hello, {name}!"
@app.route("/id/<id>")
def index(id):
if id == '1':
return "Hello, Python1!"
if id == str(2):
return "Hello, JAVA2!"
if int(id) == 3:
return "Hello, C3!"
return f"Hello, {id}!"
if __name__ == "__main__":
app.run()
注意:默认接受字符串string!!
为了使其传入的内容不再是默认的“字符串”类型,可以使用转换器来进行转换。转换器类型:
数据类型 | 接受的数据 |
---|---|
string | (默认)接受任何不带斜杠的文本 |
int | 接受正整数 |
float | 接受正浮点值 |
path | 与 string 类似,但还接受斜杠 |
uuid | 接受 UUID 字符串 |
from flask import Flask
app = Flask(__name__)
from markupsafe import escape
@app.route('/user/<username>')
def show_user_profile(username):
return f'User {escape(username)}'
@app.route('/post/<int:post_id>')
def show_post(post_id):
return f'Post {post_id}'
@app.route('/path/<path:subpath>')
def show_subpath(subpath):
return f'Subpath {escape(subpath)}'
if __name__ == "__main__":
app.run()