MultiValueDictKeyError Using Appengine SDK and Django for File Upload
有人能帮我找出我的问题吗?
我正在尝试使用appengine和django实现一个文件上传例程,我遇到了一个多值的dictkeyError错误。文件似乎没有从网页发送到服务器。
其中的一部分是学习练习,所以我不想使用djangoform来为我处理数据。
我正在使用,sdk版本1.1.8,django版本1.1.0 alpha,和google appengine django r68
我的HTML如下所示:
1 2 3 4 5 6 7 | <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> |
我的Python看起来像这样:
定义索引(请求):
1 2 3 4 5 6 7 8 9 10 | 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,})) |
错误如下:
多值医学键错误/
"在中找不到密钥'imgfile'"
请求方式:post请求URL:http://localhost:8000/异常类型:多值医学键错误异常值:"在中找不到密钥'imgfile'"异常位置:索引第19行中的/users/david/sites/testsite/myapp/views.pypython可执行文件:/library/frameworks/python.framework/versions/2.5/resources/python.app/contents/macos/pythonpython版本:2.5.2
/索引中的users/david/sites/testsite/myapp/views.pyblfiledata=request.files['imgfile'].read()…局部VARS变量值Nextxttestmodel(*'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/x html+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'、'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'、'mode'w'at 0x130b0>、'wsgi"wsgi.multithread":false,"wsgi.run_once":true,"wsgi.url_scheme":"http","wsgi.version":(1,0)>
思想?谢谢,戴维
我也遇到过这个错误,但那是因为我使用了encoding="multipart/form data",我认为这是错误的。我改为使用enctype="multipart/form data",它工作正常。
由于某种原因,文件没有被上载,或者如果它被绑定到request.file s中的另一个密钥。
尝试记录request.files的值,或者尝试从处理程序检查它的值,并查看request.files dict.中真正包含的内容,这可能会导致一些突破。
要设置跟踪,可以使用pdb。
1 2 | import pdb pdb.set_trace() |
好吧,最奇怪的事情发生了。我在昨天签字前写了这个问题。当我今晚启动再次尝试的时候,在我对它做任何更改之前,它工作了。无论如何,谢谢你的帮助。