【问题标题】:Django file upload...why is this working?Django 文件上传...为什么这样有效?
【发布时间】:2011-03-21 21:13:56
【问题描述】:

这是我第一次尝试使用 Django 上传文件。我做了一些事情并且成功了,尽管后来我意识到这不是正确的方法。当我在对象上调用 save 时,它​​是否调用了 FileField 的内置处理程序?我意识到我应该创建自己的处理程序,但我只是好奇为什么会这样。

def upload_test(request):
user=User.objects.get(pk=user.id)
photoform=PhotoForm()
if request.method=='POST':
    photoform=Post_PhotoForm(request.POST,request.FILES)
    if photoform.is_valid():
        photo=photoform.save(commit=False)
        photo.user=user
        photo.save()
        return HttpResponse('success')
    else:
        return HttpResponse('%s' %photoform.errors)
return render_to_response("site/upload_test.html", {'photoform':photoform}, context_instance=RequestContext(request))   

这是保存对象并将文件上传到 FileField 中指定的目录。

如果我创建一个以块的形式写入文件的处理程序,我怎样才能保存 photoform 实例?它会创建重复项吗?

感谢您的洞察力。

【问题讨论】:

  • “将文件分块写入的处理程序”是什么意思?
  • def handle_uploaded_file(f): destination = open('some/file/name.txt', 'wb+') for chunk in f.chunks(): destination.write(chunk) destination.close ()
  • 好的,我很困惑,所以在您的代码中,您有一个用于保存文件的默认处理程序,默认情况下这是有效的,因为它是由表单处理的。您自己的处理程序可以处理 request.FILES(例如,没有表单本身)。
  • 你能发布更多关于你的模型和表格的信息吗?

标签: django django-models file-upload


【解决方案1】:

我想PhotoFormModelForm?仅标准Forms 需要按照docs 中所述手动处理上传的文件。块处理由models.FileField 及其storage 对象等在后台执行。

【讨论】:

  • 刚刚看到这个。谢谢 drMeers,我假设了很多,但想确定一下。
猜你喜欢
  • 1970-01-01
  • 2016-04-07
  • 1970-01-01
  • 1970-01-01
  • 2018-01-17
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
  • 1970-01-01
相关资源
最近更新 更多