10 Flask 路由入门

10 Flask 路由入门

在 Flask 中,路由 是一个重要的概念,它决定了用户如何通过 URL 访问您的应用程序的不同部分。通过定义路由,您可以将 URL 请求映射到具体的处理函数,从而形成一个完整的 Web 应用。

什么是路由?

路由 是将用户请求的 URL 和处理该请求的函数联系起来的机制。在 Flask 中,您可以使用装饰器来定义路由。每当用户访问指定的 URL,Flask 会调用与该 URL 关联的函数。

创建基本路由

下面是一个简单的 Flask 应用程序示例,展示了如何定义基本路由。

1
2
3
4
5
6
7
8
9
10
from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
return 'Hello, Flask!'

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

在上面的代码中,我们定义了一个简单的路由:

  • @app.route('/') 是一个装饰器,它告诉 Flask,当用户访问根 URL / 时,应该调用 home 函数。
  • home 函数返回一个字符串 'Hello, Flask!',这是用户访问页面时看到的内容。

定义多个路由

您可以轻松定义多个路由来响应不同的 URL 请求。例如:

1
2
3
4
5
6
7
@app.route('/about')
def about():
return 'This is the About page.'

@app.route('/contact')
def contact():
return 'This is the Contact page.'

在这个示例中,我们添加了两个新的路由:

  • 访问 /about 将显示 'This is the About page.'
  • 访问 /contact 将显示 'This is the Contact page.'

路由参数

Flask 允许您在路由中使用参数。这使得创建动态 URL 变得简单。以下是一个使用路由参数的示例:

1
2
3
@app.route('/user/<username>')
def show_user_profile(username):
return f'User: {username}'

在这个例子中:

  • '/user/<username>' 这是一个包含路径参数 username 的路由。
  • 当用户访问 /user/john 时,show_user_profile 函数将被调用,返回 User: john

类型转换

您还可以对路由参数进行类型转换。Flask 支持多种转换器,如 intfloatpath。例如:

1
2
3
@app.route('/post/<int:post_id>')
def show_post(post_id):
return f'Post ID: {post_id}'

这个路由要求 post_id 参数是一个整数。如果用户访问 /post/10,将返回 Post ID: 10

处理不同的 HTTP 方法

Flask 还允许您为不同的 HTTP 方法定义路由。例如,您可以处理 GETPOST 请求:

1
2
3
4
5
@app.route('/submit', methods=['GET', 'POST'])
def submit():
if request.method == 'POST':
return 'Form submitted!'
return 'Submit a form!'

在这里,/submit 路由可以处理 GET 请求(显示表单)和 POST 请求(处理表单提交)。

总结

通过使用 Flask 的路由功能,我们可以轻松地为应用创建友好的 URL,处理动态内容,并响应不同的 HTTP 请求。掌握路由的基本用法是构建 Flask 应用的第一步,接下来您可以开始探索更复杂的功能,如模板和数据库。

11 Flask URL 规则实战

11 Flask URL 规则实战

在 Flask 中,URL 规则是路由系统的核心部分,它允许我们将 URL 映射到视图函数。通过 URL 规则,我们可以定义如何响应特定的 URL 请求。我们将通过几个案例来深入了解 Flask 的 URL 规则。

基本的 URL 规则

Flask 使用“装饰器”语法来定义 URL 规则。我们先来看一个简单的例子:

1
2
3
4
5
6
7
8
9
10
from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
return '欢迎来到主页'

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

在上面的代码中,@app.route('/') 定义了 URL 规则 /,它会将根 URL 映射到 home 函数。

URL 变量

URL 变量允许我们在 URL 中定义动态部分。例如,我们可以创建一个用户资料页,URL 中包含用户名。

1
2
3
@app.route('/user/<username>')
def show_user_profile(username):
return f'用户:{username}'

在这个例子中,当用户访问 /user/john 时,show_user_profile 函数会接收到 'john' 作为 username 参数。

类型转换

Flask 还支持类型转换,可以通过在变量名后面加上冒号来指定变量类型。支持的类型包括 intfloatpath 等。

1
2
3
@app.route('/post/<int:post_id>')
def show_post(post_id):
return f'帖子 ID:{post_id}'

访问 /post/1 会返回 帖子 ID:1,而访问 /post/abc 则会返回错误 404。

可选参数

可以使用 defaults 选项来定义可选参数,实现更灵活的 URL 规则。

1
2
3
4
@app.route('/greet', defaults={'name': '客人'})
@app.route('/greet/<name>')
def greet(name):
return f'你好,{name}!'

在这个案例中,访问 /greet 会返回 你好,客人!,而访问 /greet/Alice 会返回 你好,Alice!

组合 URL 规则

Flask 还支持组合多个 URL 规则,这样可以使得不同 URL 响应同一视图函数。

1
2
3
4
@app.route('/about')
@app.route('/about-us')
def about():
return '关于我们'

无论是访问 /about 还是 /about-us,都会返回 关于我们

结束语

通过以上实例,我们对 Flask 中的 URL 规则有了基本了解。URL 规则是构建 Flask 应用的基础,灵活运用它能极大提升应用的可用性与维护性。在实际开发中,合理地设计 URL 结构是至关重要的。

12 Flask HTTP 方法实战

12 Flask HTTP 方法实战

在Flask中,HTTP方法是与客户端(如浏览器)进行交互的基础。常见的HTTP方法有GETPOSTPUTDELETE等。本文将详细介绍这些方法在Flask中的使用,并通过案例帮助你快速上手。

GET 方法

GET方法用于请求数据,是最常用的HTTP方法之一。在Flask中,你可以使用@app.route装饰器定义一个处理GET请求的路由。

示例

1
2
3
4
5
6
7
8
from flask import Flask, request

app = Flask(__name__)

@app.route('/hello', methods=['GET'])
def hello():
name = request.args.get('name', 'World')
return f'Hello, {name}!'

在这个例子中,/hello路由可以通过GET请求访问,并可接受一个查询参数name。你可以通过以下URL访问它:

1
http://localhost:5000/hello?name=Flask

POST 方法

POST方法用于提交数据。常用于表单提交等场景。在Flask中,我们同样使用@app.route来定义处理POST请求的路由。

示例

1
2
3
4
5
6
7
8
from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/data', methods=['POST'])
def data():
json_data = request.json # 获取JSON数据
return jsonify({'received': json_data}), 201

在这个例子中,/data路由会接收一个POST请求,期望请求体为JSON格式的数据。使用curl命令可以模拟POST请求:

1
curl -X POST -H "Content-Type: application/json" -d '{"key": "value"}' http://localhost:5000/data

PUT 方法

PUT方法用于更新现有资源。在Flask中,可以通过指定methods=['PUT']来处理该请求。

示例

1
2
3
4
5
@app.route('/update/<int:item_id>', methods=['PUT'])
def update_item(item_id):
json_data = request.json
# 假设更新数据库条目...
return jsonify({'item_id': item_id, 'updated_data': json_data}), 200

上述例子展示了一个更新资源的API。可以通过下面的命令来测试它:

1
curl -X PUT -H "Content-Type: application/json" -d '{"name": "Updated Item"}' http://localhost:5000/update/1

DELETE 方法

DELETE方法用于删除资源。你可以在Flask中定义一个处理DELETE请求的路由。

示例

1
2
3
4
@app.route('/delete/<int:item_id>', methods=['DELETE'])
def delete_item(item_id):
# 假设删除数据库条目...
return jsonify({'result': 'Item deleted', 'item_id': item_id}), 204

测试删除操作可以使用以下命令:

1
curl -X DELETE http://localhost:5000/delete/1

总结

通过以上示例,你可以看到Flask如何处理不同的HTTP方法。在实际应用中,合理使用这些方法能够让你的API接口更加清晰和符合RESTful设计理念。继续深入学习Flask,你将能构建出更强大和高效的Web应用。