【发布时间】: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