ValueError: недопустимый литерал для int () с основанием 10 - PullRequest
3 голосов
/ 07 августа 2009

Я получил следующую ошибку при попытке извлечь данные с помощью Google App Engine из одной записи на одной странице, например, На foobar.com/page/1 будут показаны все данные с идентификатором 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 ]

2 голосов
/ 07 августа 2009

Измените self.request.get("id") на просто id, который уже передается вашему обработчику get.

Код, как он есть, будет работать только для URL, таких как /browse/1/?id=1

1 голос
/ 07 августа 2009

Я не совсем уверен, чего вы здесь добиваетесь. Первая строка:

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

возвращает объект Page с идентификатором, извлеченным из строки запроса. Чтобы он работал с переданным аргументом, измените его на:

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

Одера - вторая строка:

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

Это не возвращает запрос - он возвращает объект страницы, и если вы замените 'id' на 'int (id)', то будет сделано то же самое, что и в первой строке. Чего ты здесь пытаешься достичь?

0 голосов
/ 25 апреля 2016

Ошибка (как я уверен, что вы знаете - или должны знать, поскольку, кажется, вы очень далеко продвинулись в программировании) означает, что вы печатаете / читаете недопустимый литерал (недопустимый символ) для чего-то, что должно иметь основу 10 значение (т. е. 0-9 цифр).

0 голосов
/ 08 июля 2010

У меня была похожая ошибка в одном из моих кодов. Я просто сделал простой взлом сначала преобразовав его в десятичную, а затем преобразовав в int int(Decimal(str(self.request.get("id"))))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...