我正在尝试创建一个简单的应用程序来返回给定来自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()的无效文字:''
我假设问题在于变量以前是未知的并且可能以或未指定的方式开始,保持为''因此,创建错误。任何帮助将不胜感激!
答案 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()返回空字符串('')
因此,您的代码是正确的,但不应检查a
或b
是None
,而应检查空字符串。
答案 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')