私は Eclipse で Python2.7 と Django1.2 を使用する Google Appengine プロジェクトを持っています。これにより、ユーザーはフォームを使用して画像をアップロードし、サイズを変更し、BLOB フィールドとして保存できます。
以下に示すブレークポイントを追加すると、式ビューで「ファイル ['コンテンツ']」が値「 TypeError: 'InMemoryUploadedFile' object is not subscriptable」を示していることがわかりました。
この行に入る、またはこの行を超えると、エラー ハンドラにジャンプします。
誰かがこの問題を解決する方法を教えてもらえますか? 前もって感謝します!
if req.method == 'POST':
try:
u_form = UserInfoForm(req.POST)
if not u_form.is_valid():
return err_page(_('Error'))
u = coffeeuser.CoffeeUser.all().filter('user =', user_info).get()
u.nickname = user_info.nickname()
u.realname = req.POST.get('real_name')
u.phone = req.POST.get('phone')
u.address = req.POST.get('address')
if req.FILES.get('photo_file'):
file = req.FILES.get('photo_file')
img = images.Image(file['content']) <<<Breakpoint...Error occurs here
img.resize(width=50, height=50)
resized_img = img.execute_transforms(output_encoding=images.JPEG)
u.photo_file = db.Blob(resized_img)
u.put()
return HttpResponseRedirect('/user/')
except Exception, x:
return err_page(_('Error'))
これが発生したときのコンソール ウィンドウのダンプを次に示します。ここにエラー メッセージは表示されません。
: 'http://localhost:8080', 'SERVER_PROTOCOL': 'HTTP/1.0', 'QUERY_STRING': '', 'CONTENT_LENGTH': '927730', 'HTTP_ACCEPT_CHARSET': 'ISO-8859-1,utf-8 ;q=0.7,*;q=0.3', 'APPENGINE_RUNTIME': 'python27', 'TZ': 'UTC', 'HTTP_COOKIE': 'RememberMe=YPD/ztDwsHCs3J9cPG5c+g==; dev_appserver_login="test@example.com:False:185804764220139124118"; sessionid=2b5fc41e4c0332b1161a002ae12e616b; csrftoken=05e24dcb62093082dc1fafe66c0a6dbb', 'SERVER_NAME': 'localhost', 'REMOTE_ADDR': '127.0.0.1', 'SDK_VERSION': '1.6.5', 'PATH_TRANSLATED': 'C:\_dev\eclipse-work\gae\pydev5 \src\main.py', 'SERVER_PORT': '8080', 'CONTENT_TYPE': 'multipart/form-data;/ ;q=0.8', 'APPLICATION_ID': 'dev~quizoncloud', 'GATEWAY_INTERFACE': 'CGI/1.1', 'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8', 'AUTH_DOMAIN': 'gmail. com', '_AH_ENCODED_SCRIPT_NAME': '/user/'} DEBUG 2012-05-26 07:36:19,815 datastore_stub_index.py:181] index.yaml を更新する必要はありません