Может кто-нибудь помочь мне определить мою проблему здесь:
Я пытаюсь реализовать процедуру загрузки файла, используя appengine и django, и я столкнулся с ошибкой MultiValueDictKeyError. Похоже, что файл не попадает с веб-страницы на сервер.
Некоторая часть этого является учебным упражнением, поэтому я не хочу использовать djangoform для обработки данных для меня.
Я использую SDK версии 1.1.8, django версии 1.1.0 alpha и google-appengine-django r68
Мой HTML выглядит так:
<form method="POST" action="." enctype="multipart/form-data">
Title: <input type="text" name="title"/>
Text: <input type="text" name="txt"/>
Image: <input type="file" name="imgfile"/>
<input type="submit"/>
</form>
Мой питон выглядит так:
индекс индекса (запрос):
if request.POST:
newtxt = TestModel()
newtxt.title = request.POST.get('title', '')
newtxt.txt = request.POST.get('txt', '')
blFileData = request.FILES['imgfile'].read()
if blFileData:
newtxt.img = blFileData
newtxt.put()
return render_to_response('index.html', ({'filestore': query,}))
Ошибка выглядит так:
MultiValueDictKeyError at /
"Ключ 'imgfile' не найден в"
Способ запроса: POST
URL запроса: http://localhost:8000/
Тип исключения: MultiValueDictKeyError
Значение исключения: "Ключ 'imgfile' не найден в"
Расположение исключения: /Users/david/Sites/testsite/myapp/views.py в индексе, строка 19
Исполняемый файл Python: /Library/Frameworks/Python.framework/Versions/2.5/Resources/Python.app/Contents/MacOS/Python
Версия Python: 2.5.2
/ Пользователи / david / Sites / testsite / myapp / views.py в индексе
blFileData = request.FILES ['imgfile']. read () ...
▼ Местные перемены
Значение переменной
newtxt
TestModel (** {'txt': u'World ',' img ': None,' title ': u'Hello'})
запрос
, POST :, COOKIES: {}, META: {'APPLICATION_ID': 'google-app-engine-django', 'AUTH_DOMAIN': 'gmail.com', 'CONTENT_LENGTH': '21', приложение 'CONTENT_TYPE': ' / x-www-form-urlencoded ',' CURRENT_VERSION_ID ':' 1.1 ',' GATEWAY_INTERFACE ':' CGI / 1.1 ',' HTTP_ACCEPT ':' text / xml, application / xml, application / xhtml + xml, text / html ; q = 0,9, текст / текст; q = 0,8, изображение / png, * / *; q = 0,5 ',' HTTP_ACCEPT_LANGUAGE ':' en ',' HTTP_CONNECTION ':' keep-alive ',' HTTP_HOST ':' localhost : 8000 ',' HTTP_REFERER ':' http://localhost:8000/', 'HTTP_USER_AGENT': 'Mozilla / 5.0 (Macintosh; U; Intel Mac OS X 10_4_11; ru) AppleWebKit / 525.27.1 (KHTML, как Gecko) Версия / 3.2 .1 Safari / 525.27.1 ',' PATH_INFO ': u' / ',' PATH_TRANSLATED ': u' / Users / david / Sites / testsite / main.py ',' QUERY_STRING ':' ',' REMOTE_ADDR ':' 127.0.0.1 ',' REQUEST_METHOD ':' POST ',' SCRIPT_NAME ': u' ',' SERVER_NAME ':' localhost ',' SERVER_PORT ':' 8000 ',' SERVER_PROTOCOL ':' HTTP / 1.0 ',' SERVER_SOFTWARE ' : 'Development / 1.0', 'TZ': 'UTC', 'USER_EMAIL': '', 'wsgi.errors': ', режим' w 'в 0x130b0>,' wsgi.in put ':,' wsgi.multiprocess ': False,' wsgi.multithread ': False,' wsgi.run_once ': True,' wsgi.url_scheme ':' http ',' wsgi.version ': (1, 0)} >
Мысли?
Спасибо,
David