2013-04-17 76 views
1

我正在寻找一种方法来从使用Django构建的网页上传文件,但使用django表格的而不是,即from django import formsDjango中的文件上传

为什么?只是因为我无法理解为什么我们需要这样的事情。我很确定可以处理通过表单上传的文件,就像我们可以处理通过表单提交的其他POST数据一样。请注意,如果有人能告诉我背后使用django表单的逻辑,我将不胜感激。 谢谢!

回答

0

每文档:https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.FILES

如果请求包含文件上传,request.FILES将包含让你读你从客户端接收数据UploadedFile的类的实例。


一般来说,你应该使用Django的形式,因为它们更简单地维持依赖这些表单和视图。当然,如果你的表单只包含一个字段,它可能看起来像是过度杀伤,但不用担心,最终这个双线程远远小于(因此更容易维护)自定义表单验证和清理永远是。

最大的利润是关注点的分离:因为你的表单是单独的类,它可以被多个视图重用,它也可以使用Python的继承容易地扩展,并且它可以从视图单独测试。

由于所有表单的创建和验证逻辑都位于其他地方,因此它的工作方式也相反。

一旦你学习了表单API,编写表单Django方式最终会比直接从视图中处理request.POST更快更简单。 Django表单处理传入的数据,并执行基本的清理和验证以及类型强制。如果没有他们,你将不得不花时间为自己的表单清理,验证和错误处理编写样板文件。

当数据验证和清理发生时,Django Forms还提供了将额外代码挂钩到表单的“钩子”,允许您在字段接收值时执行额外的操作。甚至还有model.Form,它允许您从模型生成表单,为您节省更多时间。

由于Django表单您可以专注

虽然我们在这,你也应该有一个阅读以下内容: https://docs.djangoproject.com/en/dev/ref/contrib/csrf/ https://docs.djangoproject.com/en/dev/topics/http/decorators/#django.views.decorators.http.require_POST

这些都是mustknow是为了让您的形式从基本安全各种攻击。