Может ли кто-нибудь помочь мне определить мою проблему здесь:
Я пытаюсь реализовать процедуру загрузки файлов с помощью 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>
Мой питон выглядит так:
индекс def (запрос):
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 в /
"Ключ imgfile не найден в"
Метод запроса: URL-адрес запроса POST: http://localhost:8000/ Тип исключения: MultiValueDictKeyError Значение исключения: "Key" imgfile 'не найден в "Местоположение исключения: /Users/david/Sites/testsite/myapp/views.py в индексе, строка 19 Исполняемый файл Python: /Library/Frameworks/Python.framework/Versions/2.5/Resources/Python.app/ Содержание / MacOS / Python Версия Python: 2.5.2
/Users/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 ':' application / 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, text / plain; q = 0.8, image / 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; en) Версия AppleWebKit / 525.27.1 (KHTML, как Gecko) /3.2.1 Safari / 525.27.1 ',' PATH_INFO ': u' / ',' PATH_TRANSLATED ': u' / Users / david / Sites / testsite / main.p y ',' 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 ':' Разработка / 1.0 ',' TZ ':' UTC ',' USER_EMAIL ':' ',' wsgi.errors ':', режим 'w' в 0x130b0>, 'wsgi.input':, 'wsgi.multiprocess': Ложь, 'wsgi.multithread': Ложь, 'wsgi.run_once': Истина, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>
Мысли? Спасибо Дэвид