Python Django,无法向浏览器提供文件

Python Django,无法向浏览器提供文件,python,django,django-models,Python,Django,Django Models,我对django 1.6有问题。我试图通过文件字段模型保存一个文件,然后再次打开它以将其提供给浏览器。当试图打开保存的文件时,我无法访问它,总是出现“非类型”错误 我的代码就是这样编写的: 模型: 视图: 回溯: 尝试wb.odt.savetest.odt,tmp,save=False,当save=trues是默认值时,您在保存文件后也会保存模型,这可能不是您想要的。最后我让它工作了:D 似乎我不需要打开该文件,因为它在访问模型时已经打开了。因此,将我的观点改为以下解决了问题:D 看法 clas

我对django 1.6有问题。我试图通过文件字段模型保存一个文件,然后再次打开它以将其提供给浏览器。当试图打开保存的文件时,我无法访问它,总是出现“非类型”错误

我的代码就是这样编写的:

模型: 视图: 回溯:
尝试wb.odt.savetest.odt,tmp,save=False,当save=trues是默认值时,您在保存文件后也会保存模型,这可能不是您想要的。

最后我让它工作了:D

似乎我不需要打开该文件,因为它在访问模型时已经打开了。因此,将我的观点改为以下解决了问题:D

看法
class WB(models.Model):
    odt = models.FileField()
def save(request):
    ...
    #tmp.odt is generated befor
    tmp = File(open('files/tmp/tmp.odt', 'rb'))
    wb.odt.save("test.odt", tmp)
    tmp.close()
    ...
def display(request):
    odt = wb.odt.open(mode='rb')
    response = HttpResponse(content_type='application/vnd.oasis.opendocument.text; charset=UTF-8')
    response['Content-Disposition'] = 'attachment; filename='test.odt'
    #in the next line the error is thrown
    response['Content-Length'] = os.path.getsize(odt.url)
    response['Content-Transfer-Encoding'] = 'binary'
    response.write(odt)
    return response
File "D:\python2.7\lib\site-packages\django-1.6.7-py2.7.egg\django\core\handlers\base.py" in get_response
112.                response = wrapped_callback(request, *callback_args, **callback_kwargs)
 File "D:\workspace\certwb\wb\views.py" in display
25.                 response['Content-Length'] = os.path.getsize(odt.url)

Exception Type: AttributeError at /display/
Exception Value: 'NoneType' object has no attribute 'url'
def: display(request):
    odt = wb.odt.file
    response = HttpResponse(content_type='application/vnd.oasis.opendocument.text; charset=UTF-8')
    response['Content-Disposition'] = 'attachment; filename="test.odt"'
    response['Content-Length'] = odt.size
    response['Content-Transfer-Encoding'] = 'binary'
    response.write(odt.read())
    return response