【问题标题】:Using <input type="file"> in Django在 Django 中使用 <input type="file">
【发布时间】:2011-10-01 11:03:03
【问题描述】:

当有人在选择带有&lt;input type="file"&gt; 元素的文件后点击提交时,我如何在 Django 中访问该文件的内容?

(似乎发送到请求处理程序的请求在任何地方都没有文件的踪迹——甚至在request.FILES 中也没有。)

目前我的模板是这样的:

<form method="post" enctype="multipart/form-data">
 <input type="file" enctype="multipart/form-data" name="file" accept="text/csv"/>
 <input type="submit" value="Upload" />
</form>

查看:

def HandleRequest(request):
  print "**** request:", request

我没有看到任何关于该文件的打印内容。

注意:

在 Django 中可能还有其他方法可以做到这一点,但我正在寻找使用简单 input 标记和 not 其他东西的解决方案(这可能涉及Javascript)。

【问题讨论】:

  • 啊,你更新了你的帖子...请忽略我的回答
  • 根据文档 (docs.djangoproject.com/en/dev/ref/request-response/…) 它应该可以工作。也许发布您的视图代码?
  • “其他”方法是正确的,如文档中所述:docs.djangoproject.com/en/dev/topics/http/file-uploads/…。您应该在模型中而不是直接在 HTML 中定义文件上传表单。
  • @George:这些可能会更好,但我的方法并没有“错误”,所以我想在求助于为我自动化的工具之前学习如何手工操作。如果我不知道某个工具在做什么,我通常不会使用它。
  • @George:实际上,我发现 Django 非常棒,正是因为它可以让您在需要/需要时手动操作。我记得在 Django 书中读到“几乎所有 Django 部分都是可选的”,因为他们不希望框架妨碍。

标签: html django file-upload input requesthandler


【解决方案1】:

您发布的代码在发布时运行良好。 HTML 是正确的(尽管我认为 &lt;input&gt; 上的 enctype 充其量是多余的),并且一个非常简单的视图在 POST 之后显示了一个 InMemoryFile。问题一定出在浏览器和您的视图之间。需要检查的一些事项:

  • 中间件。
  • 阿帕奇。
  • Nginx.
  • 装饰器在您的视野中。
  • mod_wsgi 配置。

【讨论】:

  • +1 我不知道发生了什么,但是在玩了一些中间件之后,它就可以工作了(虽然我不确定这是问题所在......我想我错过了其他东西,但无论如何)。谢谢。 :)
猜你喜欢
  • 2010-11-05
  • 2013-04-19
  • 2017-12-04
  • 2011-09-06
  • 1970-01-01
  • 1970-01-01
  • 2017-11-26
  • 2013-12-07
  • 1970-01-01
相关资源
最近更新 更多