我的目标是运行一个Flask应用程序,该应用程序将获得此表单的URL,其中ID会有所不同:
http://localhost:5000/Longword/game?firstid=123&secondid=456&thirdid=789
并返回一个输出类似
的简单页面First id = 123, second id = 456, third id = 789
我运行此脚本,当在示例URL
中进行硬编码时,我无法获取请求args以返回除None之外的任何内容。我已经尝试将int格式化为字符串和类似的东西 - 在任何情况下都不能让请求args工作。
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
我的第二个问题,即在我可以获得请求args之后将解决的问题是,我无法以这种方式配置route()
来处理变量URL
。我只能通过将页面硬编码到路由来加载页面。我使用会话单独尝试这样做,但同样不成功。
答案 0 :(得分:6)
在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
顺便说一句:你也可以运行这个网址而不用一些参数,即
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)
答案 1 :(得分:4)
不要混淆查询参数和路径参数。
路径参数是URL
的路径部分中的变量。
@app.route('/longword/game_id/')
def longword(game_id):
[...]
您可以选择指定此类参数的类型:
@app.route('/longword/<int:game_id>/')
def longword(game_id):
[...]
要调用该功能,您需要GET
http://localhost:5000/longword/123/
这些参数不可选(除非你声明没有它们的另一条路线)。参数未在URL中命名,但参数/值关联不明确。想想位置参数。
查询参数位于查询字符串中(在?
之后)。
@app.route('/longword/')
def longword(game_id):
game_id = request.args.get('gameid')
return "got hardcode %d" % game_id
在这种情况下,路线不知道参数。您可以从请求对象中获取它们。请注意,此处没有验证,因此您必须涵盖丢失或错误类型的情况。
要调用该功能,您需要GET
http://localhost:5000/longword/?gameid=123&playerid=456
查询参数可以按任何顺序提供,它们可以是可选的,具体取决于您在函数中执行的操作。想想关键字参数。
注意:要获得功能参数的验证,您可能需要查看webargs。