0

我有一个类似于以下的模型类 -

class Document(models.Model):
    docfile = models.FileField(upload_to='documents/%Y/%M/%D')

一切正常,文件根据目录结构成功上传。

现在我不想上传这种格式的文件,只想上传一个文件夹中的所有文件,所以我改变了逻辑..

class Document(models.Model):
    docfile = models.FileField(upload_to='documents')

现在它没有上传文件并抛出错误。也许我需要运行一些命令,但我不知道是什么??

请提出一些建议

编辑1:

好的..我发现实际问题出在其他地方。

我有这样的看法 - (请忽略错误的间距,但在实际代码中很好)

def lists(request):

   // Problematic Code Start
   path = settings.MEDIA_URL + 'upload/location.txt' 
   f = open(path, 'w')
   myfile = File(f)
   myfile.write('Hello World')
   myfile.closed
   f.closed
   // Problematic Code ends


   # Handle file upload

   if request.method == 'POST':

       form = DocumentForm(request.POST, request.FILES)

       if form.is_valid():
           filename = Document(docfile = request.FILES['docfile'])
           filename.save()
           # Redirect to the document list after POST
       return HttpResponseRedirect(reverse('sdm:lists'))
       #return render_to_response(reverse('sdm:lists'))
   else:
       form = DocumentForm() # A empty, unbound form

       # Load documents for the list page
       documents = Document.objects.all()

       # Render list page with the documents and the form
       return render_to_response(
           'sdm/lists.html',
           {'documents': documents, 'form': form},
           context_instance=RequestContext(request)
       )

当我删除有问题的代码时,一切正常。(忽略这个奇怪代码的目的,实际兴趣更大)

MEDIA_URL=/media/

这是错误:

 IOError at /sdm/lists

 [Errno 2] No such file or directory: '/media/upload/location.txt'

尽管文件存在并且所有权限都www-data:www-data具有755

4

1 回答 1

1

确实是“有问题的”代码-编写此代码的人应该找到另一份工作。这段代码在不止一个方面是错误的(使用 MEDIA_URL 而不是 MEDIA_ROOT - 这是导致 IOError 的原因 - 并且严重滥用 Python 的死简单文件对象)并且完全没用,看起来像是某人偶然编程的遗留物. 长话短说:只需将其删除即可。

于 2013-11-08T09:28:27.977 回答