动态路由

前面博客中,我们学习如何创建基本的 Flask 应用,并定义了一些简单路由。但有时候,我们需要更加灵活的路由能够根据用户请求不同动态生成响应。Flask 提供了动态路由功能,使我们能够轻松处理这种需求

使用动态路由参数

动态路由是指路由中的某些部分可以变量,这样在处理请求时可以获取这些变量的值。例如

from flask import Flask

app = Flask(__name__)

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

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

在上面的例子中,<username&gt;<int:post_id&gt; 都是动态路由参数。当用户访问 /user/john 时,username 参数将被设置'john';当用户访问 /post/1 时,post_id 参数将被设置1。在Flask中,除了int之外,还有一些其他的数据类型可以用于动态路由。以下是一些常见数据类型和它们的描述

数据类型 描述
int 接受整数
float 接受浮点数
path 类似字符串,但可以包含斜杠(/)
string 默认类型,接受没有斜杠字符串
uuid 接受UUID字符串

获取请求中的数据

1. 在 GET 请求中获取参数

在 Flask 中,可以使用 request.args 对象获取 GET 请求中传递的参数。这些参数通常是通过查询字符串(Query String传递的。

from flask import Flask, request

app = Flask(__name__)

@app.route('/search')
def search():
    query = request.args.get('q')
    return f'Search query: {query}'

用户可以通过访问 /search?q=Flask传递搜索参数。

2. 在 POST 请求中获取表单参数(Content-Type=multipart/formdata Content-Type=application/xwwwformurlencoded)
from flask import Flask, request

app = Flask(__name__)

@app.route('/login', methods=['POST'])
def login():
    username = request.form.get('username')
    password = request.form.get('password')
    return f'Username: {username}, Password: {password}'
3. 在 POST 请求中获取raw数据(Content-Type=application/json Content-Type=text/plain)
from flask import Flask, request

app = Flask(__name__)

@app.route('/raw', methods=['POST'])
def get_raw_data():
    data = request.data
    return f'Raw data received: {data.decode()}'
4. 在 POST 请求中获取件数据(Content-Type=multipart/formdata)
from flask import Flask, request

app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload_file():
    if 'file' not in request.files:
        return 'No file part'

    file = request.files['file']

    if file.filename == '':
        return 'No selected file'

    return f'File {file.filename} uploaded successfully'
5. 获取请求中的headercookie
from flask import Flask, request

app = Flask(__name__)

@app.route('/get_data')
def get_data():
    cookie_data = request.cookies.get('my_cookie')
    header_data = request.headers.get('User-Agent')
    return f'Cookie data: {cookie_data}, User-Agent: {header_data}'

总结

本篇博客中,我们学习如何使用 Flask 处理动态路由,以及在请求中获取参数的方法。无论是通过动态路由参数,还是通过请求对象的不同属性,Flask 提供了丰富的工具处理各种请求和路由需求

原文地址:https://blog.csdn.net/weixin_39987031/article/details/134783312

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_42664.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注