2012-12-20 7 views
2

나는 django-rest-framework를 사용하여 간단한 JSON API를 만들었고 JSON 파일로 컬렉션을 포함하는 하나의 zip 파일로 5 개의 컬렉션을 다운로드하고 싶습니다. (내 애플 리케이션이 데이터의 오프라인 덤프가 필요합니다).Django-rest-framework json dump

저는 /download/에서 제공되는보기를 작성하려고합니다. 내 모든 MyModelList.as_view()의 출력을 번들로 묶어서 제공합니다.

가장 좋은 방법은 무엇입니까? urllib/Requests를 사용하여 직접 내 API를 쿼리 할 수 ​​있지만 전체 HTTP 스택을 호출하는 데는 먼 길을가는 것처럼 보입니다 ...

많은 감사!

+0

'MyModelList.as_view()에 나타낸 바와 같이, (요청 형식 = "JSON을")를 Content-Disposition 헤더를 설정하는 것을 잊지 않는다. rendered_content '내가 원하는 JSON을 얻는 것처럼 보입니다. 그러나 최선의 선택입니까? – 0atman

+0

그 모든 실용 예제는 무엇입니까? 감사 – cor

답변

3

당신이 언급 한 MyModelList.as_view()(request, format="json").rendered_content을 사용할 수 있습니다. 설정에 따라 모델 전체를 통과하는 대신 직접 직렬 전화를 호출 할 수도 있습니다. 이것은 물론 여러분이보기에 특별한 것을 수행했는지 또는 직렬화 된 모델 데이터를 전달했는지 여부에 달려 있습니다.

파일을 압축하는 데 Python의 zipfile module을 사용하십시오. 추가 힌트는 https://stackoverflow.com/a/9644831/27401https://stackoverflow.com/a/908293/27401을 참조하십시오. 요약 :

  • 사용 StringIO는 파일 - 류의 객체 (대신 임시 파일)을 만들 수 있습니다.

  • 콘텐츠를 추가하려면 해당 StringIO에 zipfile의 .writestr('filename-in-zip.json', your_json_string)을 사용하십시오.

  • 장고 응답으로 ZipFile를 반환하면 https://stackoverflow.com/a/909088/27401

관련 문제