【问题标题】:MultiValueDictKeyError Using Appengine SDK and Django for File UploadMultiValueDictKeyError 使用 Appengine SDK 和 Django 进行文件上传
【发布时间】:2010-10-02 15:01:00
【问题描述】:

谁能帮我在这里发现我的问题:

我正在尝试使用 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 请求网址: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

/Users/david/Sites/testsite/myapp/views.py 在索引中 blFileData = request.FILES['imgfile'].read() ... ▼ 局部变量 变量值 新文本
TestModel(**{'txt': u'World', 'img': 无, '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, like 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': ', mode 'w' at 0x130b0>, 'wsgi.i nput': , 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': True, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)} >

想法? 谢谢, 大卫

【问题讨论】:

    标签: django google-app-engine upload file-upload


    【解决方案1】:

    由于某种原因,文件没有上传,或者根本没有上传,它被绑定到 request.FILES 中的不同键

    尝试记录 request.FILES 的值或尝试从处理程序检查其值并查看 request.FILES 字典中真正包含的内容。这可能会带来一些突破。

    要设置跟踪,可以使用 pdb。

    import pdb
    pdb.set_trace()
    

    【讨论】:

      【解决方案2】:

      我也遇到过这个错误,但那是因为我使用了 encoding="multipart/form-data",我认为这是错误的。我改为使用 enctype="multipart/form-data" 并且它有效。

      【讨论】:

        【解决方案3】:

        好吧,最奇怪的事情发生了。我在昨天签字之前写了这个问题。当我今晚重新启动以再次尝试时,在我对其进行任何更改之前,这件事已经奏效了。无论如何感谢您的帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-05-14
          • 2014-06-14
          • 1970-01-01
          • 1970-01-01
          • 2012-12-17
          • 2010-12-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多