get (self) принимает ровно 1 аргумент, 2 при условии - НЕ - PullRequest
1 голос
/ 15 июля 2011

У меня очень странная ошибка в следующем:

class ServeHandler(blobstore_handlers.BlobstoreDownloadHandler):
def get(self, resource):
    iconKey = str(urllib.unquote(resource))

    if iconKey:
        blob_info = blobstore.get(iconKey)

        if blob_info:
            url = images.get_serving_url(blob_key=iconKey, size=200)

            self.response.out.write('<h1>%s</h1><small>%s</small><br/><br/><img src="%s" alt="%s">' % ('A Title', '11-26-1997', url, 'A Title'))

Ответ таков:

TypeError: get() takes exactly 1 argument (2 given)

Код подходит для завершения запроса URL., передайте это в iconKey var и используйте его в качестве ключа blob для доступа к хранилищу блобов для изображения и создания URL-адреса обслуживания с помощью метода images.get_serving_url().

Кто-нибудь сталкивался с этим раньше?Я попытался поместить параметр @staticmethod поверх определения get, но, разумеется, из-за этого метод get не смог получить доступ к запросу через self.

EDIT

Я просто изменил что-то, что получило еще одну ошибку.Я использовал ([^/]+)? регулярное выражение для URL - где URL будет /view/icon/76M5e-xIStHRJDYyXBXjDA==, а ресурс, переданный методу get(), будет 76M5e-xIStHRJDYyXBXjDA== окончанием URL.

Я простоизмените регулярное выражение на (.*) согласно ответу @ systempuntoout ниже.Теперь я получаю эту ошибку: AttributeError: split с этой трассировкой стека:

ERROR    2011-07-15 13:19:39,949 __init__.py:463] split
Traceback (most recent call last):
File "/Users/mac/Desktop/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/webapp/__init__.py", line 700, in __call__
handler.get(*groups)
File "/Users/mac/icondatabase/main.py", line 72, in get
iconKey = str(urllib.unquote(self.request))
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib.py", line 1164, in unquote
File "/Users/mac/Desktop/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webob/webob/__init__.py", line 500, in __getattr__
raise AttributeError(attr)
AttributeError: split
INFO     2011-07-15 13:19:39,958 dev_appserver.py:4217] "GET /view/icon/76M5e-xIStHRJDYyXBXjDA== HTTP/1.1" 500 -
INFO     2011-07-15 13:19:40,250 dev_appserver.py:4217] "GET /favicon.ico HTTP/1.1" 404 -

Ответы [ 2 ]

1 голос
/ 15 июля 2011

Возможно, вы не соответствуете ни одному параметру группы resource в конфигурации URL-выражения.

Убедитесь, что у вас есть такое правило:

 application = webapp.WSGIApplication(
          [(r'/files/(.*)', ServeHandler)], debug=True)
    run_wsgi_app(application)

Передается параметру get () resource экземпляра ServeHandler, строка которого соответствует маршруту /files/.

Пример:
localhost:8080/files/A2312ODESDX пройдет A2312ODESDX как resource

0 голосов
/ 15 июля 2011

Вы путаете get методы двух разных классов:

  • BlobstoreDownloadHandler.get имеет два аргумента, self и resource.
  • webapp.RequestHandler.get занимает только self
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...