Python Django,无法向浏览器提供文件
我对django 1.6有问题。我试图通过文件字段模型保存一个文件,然后再次打开它以将其提供给浏览器。当试图打开保存的文件时,我无法访问它,总是出现“非类型”错误 我的代码就是这样编写的: 模型: 视图: 回溯: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
尝试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