【发布时间】:2012-12-21 16:23:21
【问题描述】:
我查看了与我的问题类似的各种问题,但找不到任何可以解决我的问题的方法。
在我的代码中,我想提供一个新生成的 excel 文件,该文件位于我的 app 目录中名为 files 的文件夹中
excelFile = ExcelCreator.ExcelCreator("test")
excelFile.create()
response = HttpResponse(content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename="test.xls"'
return response
因此,当我单击运行这部分代码的按钮时,它会向用户发送一个空文件。通过查看我的代码,我可以理解这种行为,因为我在回复中没有指向该文件...
我看到有些人使用文件包装器(我不太了解它的用途)。所以我确实这样做了:
response = HttpResponse(FileWrapper(excelFile.file),content_type='application/vnd.ms-excel')
然后,我从服务器收到错误消息:发生服务器错误。请联系管理员。
感谢您在我的 Django 任务中帮助我,您的宝贵建议让我越来越好!
【问题讨论】:
-
excelFile.file是什么类型?另外,您是否尝试过使用开发runserver和DEBUG = True运行它?这应该会得到更有用的反馈。 -
在 excelFile 类中,我使用 open() 打开一个文件,所以它是一个文件。就像我说的,它返回的是服务器错误,而不是常规的调试视图。
-
DEBUG = True在你的settings.py中吗? -
您能否提供更多的视图文件,而不仅仅是您所包含的内容?从您提到的响应(发生服务器错误)中,即使您说 DEBUG 设置为 True,听起来也不是,也许您可以提供更多错误消息?我的第一个想法是您没有在您的views.py 中从
django.core.servers.basehttp导入FileWrapper,因为这会导致您提到的错误。 -
嗨 zzzirk,您可以在这里查看更多内容:pastebin.com/7Dn5JFiU 我是认真的,DEBUG 设置为 True,我想知道为什么在这种特殊情况下我没有得到调试视图,因为其他错误它工作得很好
标签: django excel file httpresponse serve