App Engine Python Blobstore. Ошибка при загрузке изображений - PullRequest
0 голосов
/ 29 октября 2018

При попытке загрузить изображение в проект движка приложения Google с помощью blobstore выдается следующая ошибка:

ERROR    2018-10-29 11:18:21,519 user.py:476] ERROR is 'PicUploadHandler' 
object has no attribute '_BlobstoreUploadHandler__uploads'
ERROR    2018-10-29 11:18:21,519 user.py:477] EXC is 'PicUploadHandler' 
object has no attribute '_BlobstoreUploadHandler__uploads'
Traceback (most recent call last):
  File "C:\Users\...\PycharmProjects\...\user.py", line 460, in post
    upload_files = self.get_uploads()[0]  #: 'file' is file upload field in 
the form
  File "C:\Program Files(x86)\Google\google_appengine\google\appengine\ext\webapp\blobstore_handlers.py", line 380, in get_uploads
if self.__uploads is None:
AttributeError: 'PicUploadHandler' object has no attribute '_BlobstoreUploadHandler__uploads'

Мой код выглядит следующим образом:

class PicUploadHandler(BaseHandler, blobstore_handlers.BlobstoreUploadHandler):
"""handler to upload a profile photo to the blobstore"""

def get(self):

    try:
        user = self.user_obj()
        if user:
            upload_url = blobstore.create_upload_url('/u/profile-pic-upload')  #: create the upload url
            template_values = {
                'user': user,
                'upload_url': upload_url,
            }
            #: RENDER TEMPLATE
            self.render_template(ROUTE, '/profile-pic-upload.html', template_values)
        else:  
            self.redirect('/')

    except Exception, e:
        logging.error("ERROR is %s" % e)
        logging.exception("EXC is %s" % e)
        self.redirect("/oops")  # unexpected error

def post(self):

    try:
        user = self.user_obj()
        if user:
            self.response.headers['Content-Type'] = 'image/svg+xml'
            if user.pic_key:
                blobstore.delete(user.pic_key)  #: retrieve the old home photo and delete it
            upload_files = self.get_uploads()[0]  #: 'file' is file upload field in the form

            #: update the datastore values for the user's home photo
            user.pic_url = get_serving_url(upload_files.key())
            #: the blobstore key for later retrieval
            user.pic_key = upload_files.key()
            user.put()
            #: redirect to the profile page
            self.redirect('/u/edit-profile/')

    except Exception, e:
        logging.error("ERROR is %s" % e)
        logging.exception("EXC is %s" % e)
        self.redirect("/oops")  # unexpected error

Я скопировал и вставил этот код из более старого проекта, где он работает без ошибок.

Любая помощь будет высоко ценится, спасибо.

EDIT: Будучи радостной Марией, я загрузил код, чтобы проверить журналы из живого экземпляра. Кажется, проблема в dev server / datastore, так как код запускается, когда приложение находится в сети. У кого-нибудь есть идея, почему это так?

1 Ответ

0 голосов
/ 31 октября 2018

Попробуйте войти, чтобы увидеть, что у вас есть:

import logging

user = self.user_obj()
if user:
    self.response.headers['Content-Type'] = 'image/svg+xml'
    if user.pic_key:
        blobstore.delete(user.pic_key)  #: retrieve the old home photo and delete it

    logging.error(self.get_uploads())
    logging.error(self.get_uploads()[0])
    upload_files = self.get_uploads()[0]  #: 'file' is file upload field in the form
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...