我的目标是运行一个 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/