python - 在 Flask 中使用请求参数获取可变 URL

标签 python flask

我的目标是运行一个 Flask 应用程序,它将获得一个 ID 不同的这种形式的 URL:

http://localhost:5000/Longword/game?firstid=123&secondid=456&thirdid=789

并返回一个简单的页面输出类似

First id = 123, second id = 456, third id = 789

我运行此脚本,当在示例 URL 中进行硬编码时,我无法获取请求参数以返回除 None 以外的任何内容。我已经尝试将 int 格式化为字符串和类似的其他东西——在任何情况下我都无法让请求参数工作。

import os
import json
from flask import Flask, request, render_template

app = Flask(__name__)

@app.route('/')
def main():
    return "on main home page"

@app.route('/longword/gameid=123&playerid=456')
def Longword():
    user = request.args.get('gameid')
    return "got hardcode %d" % gameid

我的第二个问题是,我无法以处理变量 URL 的方式配置 route(),这将在我可以获取请求参数后解决.我只能通过将页面硬编码到路由中来加载页面。我单独尝试使用 session 来执行此操作,但同样没有成功。

最佳答案

你需要 route('/longword/') 之后没有参数吗?

那么你可以在 ? 之后带参数运行了

http://localhost:5000/longword/?gameid=123&playerid=456

在函数中,您可以使用 request.args.get()

获取此参数
@app.route('/longword/')
def longword():

    gid = request.args.get('gameid')
    pid = request.args.get('playerid')

    return "GID: %s  PID: %s" % (gid, pid)

最后一件事:即使您发送数字,参数也是字符串,因此您需要 %s 而不是 %d


顺便说一句:您也可以在没有任何参数的情况下运行此 url。

http://localhost:5000/longword/?gameid=123
http://localhost:5000/longword/?playerid=456
http://localhost:5000/longword/

您可以使用 request.args.get() 设置默认值

    gid = request.args.get('gameid', 'default gameid')
    pid = request.args.get('playerid', 'default playerid')

如果您不使用自己的默认值,则 request.args.get() 将使用 None

    gid = request.args.get('gameid')
    pid = request.args.get('playerid')

    if not gid or not pid:
        return "You forgot gameid or playerid"

    return "GID: %s  PID: %s" % (gid, pid)

关于python - 在 Flask 中使用请求参数获取可变 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40369016/

相关文章:

python - 如何在 matplotlib 中绘制滞后现象?

python - Pandas 不会丢弃符合条件的行和列

python - 如何根据 Flask 中的单选按钮值重定向?

python - 如何使用 Flask 和 WTForms 在保留表单数据的同时进行重定向?

python - 添加图像以拉取请求评论

python - 当索引包含重复数据时添加缺失的 pandas DataFrame 行

python - 寻找更好的方法来处理 python 中的更新请求

python - CORS 请求在 python Flask-socketio 中未成功

Visual Studio 的 python 工具不接受//

python - 运行单个测试有效,但运行多个测试失败 - Flask 和 Pytest