我试图通过URL传递号码并在另一页上检索它。如果我尝试指定变量类型,我会收到格式错误的URL错误,并且无法编译。如果我没有指定var类型,它将运行,但变量将变为Type None。我也无法将它转换为int。我如何将其作为整数传递...?提前谢谢。
这给我一个格式错误的网址错误:
@app.route('/iLike/<int: num>', methods=['GET','POST'])
def single2(num):
这样运行但是给了我一些我无法使用的类型:
@app.route('/iLike/<num>', methods=['GET','POST'])
def single2(num):
try:
location = session.get('location')
transType = session.get('transType')
data = session.get('data')
**num = request.args.get('num')**
答案 0 :(得分:4)
您在这里混合路由参数和请求参数。
您在路线中指定的参数是路线参数,是一种声明variable routes的方式。这些参数的值作为函数参数传递给路径函数。因此,在您的情况下,对于您的<num>
网址部分,该值将作为函数参数num
传递。
请求参数独立于路由,并作为GET参数传递给URL。您可以通过request object访问它们。这就是您使用request.args.get()
进行的操作。
完整的示例如下所示:
@app.route('/iLike/<int:num>')
def single2(num):
print(num, request.args.get('num'))
现在打开/iLike/123
会产生123 None
。请求参数为空,因为您没有指定。您可以通过打开/iLike/123?num=456
来执行此操作,这会产生123 456
。
答案 1 :(得分:1)
在您的第二个示例中,而不是num = request.args.get('num')
尝试简单地使用num
。由于您将其指定为路径/功能的输入,因此您应该能够直接访问它。
答案 2 :(得分:1)
试试这个:
@app.route('/iLike/<int:num>', methods=['GET','POST'])
def single2(num):
print(num)
答案 3 :(得分:1)
你在这里收到None
:
num = request.args.get('num')
因为您没有将num
作为查询字符串的元素传递。
使用request.args.get('num')
时?
如果我们有这样的网址:
localhost:8080/iLike?num=2
但事实并非如此。您已将num
已作为参数传递给函数。所以在你的情况下只需使用:
@app.route('/iLike/<num>', methods=['GET','POST'])
def single2(num):
try:
location = session.get('location')
transType = session.get('transType')
data = session.get('data')
print(num)
答案 4 :(得分:0)
除了其他问题外,“格式错误的网址”错误的直接原因是您在网址中包含的空格:
'/iLike/<int: num>'
代替此:
'/iLike/<int:num>'