程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

Python 30 天进阶:Flask 路由与请求处理

hfteth 2025-03-03 18:45:01 技术文章 15 ℃

在昨天初步了解了 Flask 框架以及掌握了创建简单 Flask 应用的基础上,今天我们将更深入地探究 Flask 路由的各种细节以及请求处理相关的知识,这对于构建功能丰富、交互性强的 Web 应用程序至关重要。通过学习这些内容,我们能够根据不同的用户输入和请求类型做出相应的处理,提供更加个性化的服务。

一、Flask 路由的深入学习

  1. 多路由的定义
    在 Flask 应用中,我们可以轻松定义多个不同路径的路由,每个路由对应不同的功能或页面展示。例如:
from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return '

这是首页

' @app.route('/about') def about(): return '

这是关于我们页面

' @app.route('/contact') def contact(): return '

这是联系我们页面

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


在上述代码中,我们定义了三个不同的路由:根路由 '/' 对应首页,'/about' 路由对应 “关于我们” 页面,'/contact' 路由对应 “联系我们” 页面。当用户在浏览器中访问不同的路径时,Flask 应用会调用相应的函数并返回对应的 HTML 内容。


  1. 路由参数传递
    很多时候,我们需要根据 URL 中传递的参数来展示特定的内容,比如根据用户 ID 显示特定用户的信息。在 Flask 中,可以通过在路由路径中使用尖括号 <> 来定义参数,然后在对应的处理函数中接收这个参数进行处理。示例如下:
from flask import Flask

app = Flask(__name__)

@app.route('/user/')
def user_info(user_id):
    return f'

用户 {user_id} 的信息页面

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


在 @app.route('/user/') 这个路由定义中, 表示我们期望在 URL 中接收到一个整数类型的参数,名为 user_id。在 user_info 函数中,我们直接接收这个参数,并在返回的 HTML 内容中使用它,这样当用户访问类似
http://localhost:5000/user/123 的 URL 时(其中 123 就是传递的用户 ID 参数),就会显示对应的用户信息页面了。

二、Flask 中请求对象的使用


  1. 获取请求方法
    在 Flask 应用中,每个请求都会关联一个请求对象,我们可以通过这个对象获取请求的各种信息,比如请求方法(是 GET、POST 还是其他)。示例代码如下:
from flask import Flask, request

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'GET':
        return '

这是通过 GET 方法访问的首页

' elif request.method == 'POST': return '

这是通过 POST 方法访问的首页

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


在上述代码中,通过 from flask import request 导入了请求对象,在 index 函数中,使用 request.method 来判断当前请求的方法是 GET 还是 POST,然后根据不同的请求方法返回不同的响应内容。


  1. 获取请求头信息
    请求头包含了很多关于请求的元信息,比如浏览器类型、接受的内容类型等。我们可以通过 request.headers 属性来获取请求头信息,例如:
from flask import Flask, request

app = Flask(__name__)

@app.route('/')
def index():
    user_agent = request.headers.get('User-Agent')
    return f'

你的浏览器信息:{user_agent}

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


在这个例子中,通过 request.headers.get('User-Agent') 从请求头中获取了 User-Agent 字段的值,也就是用户浏览器的相关信息,并将其展示在返回的 HTML 页面中。


  1. 获取请求体数据(针对 POST 请求)
    当处理 POST 请求时,通常会有请求体数据,比如表单提交的数据或者 JSON 格式的数据等。如果是表单数据,可以使用 request.form 属性来获取;如果是 JSON 数据,则使用 request.get_json() 方法来获取。示例如下:

处理表单数据的 POST 请求

from flask import Flask, request

app = Flask(__name__)

@app.route('/', methods=['POST'])
def handle_post_request():
    username = request.form.get('username')
    password = request.form.get('password')
    return f'

收到 POST 请求,用户名:{username},密码:{password}

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

处理 JSON 数据的 POST 请求

from flask import Flask, request

app = Flask(__name__)

@app.route('/', methods=['POST'])
def handle_json_post_request():
    data = request.get_json()
    if data:
        name = data.get('name')
        age = data.get('age')
        return f'

收到 POST 请求,姓名:{name},年龄:{age}

' return '

未收到有效的 JSON 数据

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


通过今天对 Flask 路由与请求处理的深入学习,我们能够更加灵活地定义路由,根据不同的 URL 参数展示相应内容,同时还能全面地获取请求的各类信息并进行针对性处理,这为我们构建复杂、交互性强的 Web 应用奠定了坚实的基础。


#Flask 路由深入# #请求处理技巧# #URL 参数传递# #Flask 请求对象# #Python Web 应用拓展# #Web 开发进阶#

Tags:

最近发表
标签列表