Flask URL变量类型无?

时间:2016-10-02 22:04:34

标签: python flask

我试图通过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')**

5 个答案:

答案 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>'