2012-12-21 3 views
4

저는 광산과 비슷한 다양한 질문을 보았지만 문제에 대한 해결책을 찾을 수 없었습니다. 내 코드에서Django는 생성 된 Excel 파일을 처리합니다.

, 나는라는 이름의 파일 폴더에 내 응용 프로그램 디렉토리에있는 갓 생성 된 엑셀 파일을 제공 할

excelFile = ExcelCreator.ExcelCreator("test") 
excelFile.create() 
response = HttpResponse(content_type='application/vnd.ms-excel') 
response['Content-Disposition'] = 'attachment; filename="test.xls"' 
return response 

그래서 코드의이 부분을 실행 버튼을 클릭하면, 그것을 빈 파일을 사용자에게 보냅니다. 내 코드를 살펴보면 응답 내에서 해당 파일을 가리 키지 않기 때문에이 동작을 이해할 수 있습니다 ...

일부 사람들이 파일 래퍼를 사용하는 것을 봤습니다. 그래서 나는 그렇게했다 :

그러나 그때 나는 서버로부터 오류 메시지를 받는다. 관리자에게 문의하십시오.

내 장고 퀘스트를 도와 주셔서 감사합니다. 귀중한 모든 조언을 통해 나을 것입니다.

+0

'excelFile.file' 유형은 무엇입니까? 또한,'runserver' 및'DEBUG = True' 개발과 함께 이것을 실행 해 보았습니까? 그러면 더 유용한 피드백을 얻을 수 있습니다. excelFile 클래스의 – dgel

+0

은 open()을 사용하여 파일을 열어 파일입니다. 내가 말했듯이, 그것은 일반적인 디버그보기가 아닌 서버 오류를 반환합니다. – Speccy

+0

'settings.py'에서'DEBUG = True'입니까? – dgel

답변

7

첫째, 당신이 당신이 실제로하고있는 일이기 때문에, 당신은 빈 파일을 받고 이것이 어떻게 작동하는지 이해해야합니다

response = HttpResponse(content_type='application/vnd.ms-excel') 
response['Content-Disposition'] = 'attachment; filename="test.xls"' 

HttpResponse에 응답의 내용, 인수로 먼저 수신하는을 그것의 생성자를 찾습니다

def __init__(self, content='', mimetype=None, status=None, content_type=None): 

은 그래서 당신은 당신이 원하는 내용에 대한 응답을 작성해야합니다, 당신 .xls 파일의 내용이 경우입니다.

모든 방법을 사용하여 내용을 확인할 수 있습니다. 여기

샘플 :

import StringIO 
output = StringIO.StringIO() 
# read your content and put it in output var 
out_content = output.getvalue() 
output.close() 
response = HttpResponse(out_content, mimetype='application/vnd.ms-excel') 
response['Content-Disposition'] = 'attachment; filename="test.xls"' 
0

난 당신이 사용하는 것이 좋습니다 :

python manage.py runserver 

명령 줄에서 응용 프로그램을 실행합니다. 여기에서 응용 프로그램의 콘솔 출력과 실행되는 동안 예외가 발생하는 것을 볼 수 있습니다. 이렇게하면 문제를 신속하게 해결할 수 있습니다.

+0

고마워요, 이것은 내 문제를 해결하는 데 도움이되었습니다. ** FileWrapper를 사용하려면 파일을 열어 두어야합니다 ** – Speccy

관련 문제