ValueError:具有基数10的int()的无效文字

时间:2009-08-06 20:56:45

标签: python google-app-engine

尝试使用Google App Engine从单个条目检索数据到单个页面时,我收到以下错误,例如foob​​ar.com/page/1将显示来自id 1的所有数据:

ValueError: invalid literal for int() with base 10

以下是文件:

Views.py

class One(webapp.RequestHandler):    
    def get(self, id):
        id         = models.Page.get_by_id(int(str(self.request.get("id")))) 
        page_query = models.Page.get(db.Key.from_path('Page', id))
        pages      = page_query

        template_values = {
            'pages': pages,
        }

        path = os.path.join(os.path.dirname(__file__), 'template/list.html')
        self.response.out.write(template.render(path, template_values))

Urls.py

(r'/browse/(\d+)/', One),

错误:

Traceback (most recent call last):
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/webapp/__init__.py", line 501, in __call__
    handler.get(*groups)
  File "/Volumes/foobar/views.py", line 72, in get
    id = models.Page.get_by_id(int(str(self.request.get("id"))))
ValueError: invalid literal for int() with base 10: ''

4 个答案:

答案 0 :(得分:2)

self.request.get("id")更改为仅id,它已经传递给您的get处理程序。

您拥有的代码仅适用于/browse/1/?id=1

等网址

答案 1 :(得分:1)

我不太确定你在这里要做什么。第一行:

    id         = models.Page.get_by_id(int(str(self.request.get("id")))) 

返回一个Page对象,其中包含从查询字符串中获取的ID。要使其与传入的参数一起使用,请将其更改为:

    id         = models.Page.get_by_id(int(id)) 

Odder是第二行:

    page_query = models.Page.get(db.Key.from_path('Page', id))

这不返回查询 - 它返回一个页面对象,如果用'int(id)'替换'id'与第一行完全相同。你想在这里实现什么目标?

答案 2 :(得分:0)

我的一个代码中出现了类似的错误。我只是做了一个简单的黑客攻击,首先将其转换为十进制,然后将其转换为int int(Decimal(str(self.request.get("id"))))

答案 3 :(得分:0)

错误(因为我确定你知道 - 或者应该知道,因为它似乎已经在编程中走得很远)意味着你正在键入/读取一个应该有基数10的无效文字(无效字符)值(即0-9数字)。