带有GET参数的GAE ValueError

时间:2012-03-05 10:08:24

标签: python google-app-engine get

我正在尝试创建一个简单的应用程序来返回给定来自GET参数的两个输入的余数。这些输入将从url查询中获取。

例如http://thisisanexample.appspot.com/?a=1&b=2 这应该得到答案1,因为2/1的余数= 1。

    a = self.request.get('a')
    b = self.request.get('b')
    c = 0
    if (int(a)>int(b)):
        c=int(a)%int(b)
    else:
        c=int(b)%int(a)
    self.response.out.write(type(a))

但是,我遇到了以下ValueError问题:ValueError:对于带有基数为10的int()的无效文字:''

我假设问题在于变量以前是未知的并且可能以或未指定的方式开始,保持为''因此,创建错误。任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:5)

GET参数存储在request.GET中,而不是存储在请求中,因此您希望将代码更改为

a = request.GET.get('a')
b = request.GET.get('b')

顺便说一下,你在哪里写过那段代码?什么是self.request?如果您正在撰写视图,那么它应该只是:

def my_view(request, *args, **kwargs ):
    # access request here

没有在Django HttpRequest对象上定义request.get ...

:编辑:

GAE并不完全是Django。引用GAE's documentation

  

默认情况下,get()返回空字符串('')

因此,您的代码是正确的,但不应检查abNone,而应检查空字符串。

答案 1 :(得分:1)

您必须为查询使用GET dict,因为您使用的get方法是QueryDict类的成员。此外,在这种情况下,使用get方法提供的默认参数可能很有用:

try:
    a = int(self.request.GET.get('a', 0))
    b = int(self.request.GET.get('b', 1))
except TypeError:
    # Could not cast to int
# Do what you want

答案 2 :(得分:1)

如果你使用get_range(参见http://code.google.com/intl/en/appengine/docs/python/tools/webapp/requestclass.html#Request_get_range),你可以省略手动转换为int:

self.request.GET.get_range('a')