2014-03-04 4 views
13

저는 장고를 처음 접했고,이 방법을 읽거나 들었을 것이라고 확신합니다. 그러나 어디에서나 찾을 수는 없습니다.어떻게 장고 템플릿에서 정적 HTML 파일을 생성합니까?

렌더링 된 출력을 템플릿에서 브라우저로 보내지 않고 매번 렌더링 과정을 거치지 않고도 제공 할 수있는 html 파일을 만들고 싶습니다. 메인 웹 사이트의 서버와는 별도의 시스템으로 개발 중이며 개발 시스템에 대한 액세스 권한을 부여하지 않고 사용자가 사용할 수있는 데이터의주기적인 스냅 샷을 만들어야합니다.

내 직관은 어떻게 든 응답을 파일로 리디렉션 할 수 있어야한다고 말합니다. 그러나 문서 나 다른 게시물에서 볼 수 없습니다.

+0

항상 템플릿을 문자열로 렌더링 할 수 있으며,이 문자열은 바닐라 파이썬을 사용하여 파일로 저장할 수 있습니다. 유스 케이스가 그 이상을 포함합니까? – Brandon

+0

https://github.com/datadesk/django-bakery – Paolo

답변

14

Django의 템플릿 로더를 사용하여 전달한 컨텍스트를 비롯하여 템플릿을 문자열로 렌더링 한 다음 파일 시스템에 저장할 수 있습니다. 이 파일을 Amazon S3와 같은 외부 시스템에 저장해야하는 경우 Boto 라이브러리를 사용할 수 있습니다. 다음은 트리거로 선택 쿼리 문자열 매개 변수를 사용하여 파일보기를 렌더링하는 방법의 예입니다

...

from django.shortcuts import render 
from django.template.loader import render_to_string 

def my_view(request): 
    as_file = request.GET.get('as_file') 
    context = {'some_key': 'some_value'} 

    if as_file: 
     content = render_to_string('your-template.html', context)     
     with open('path/to/your-template-static.html', 'w') as static_file: 
      static_file.write(content) 

    return render('your-template.html', context) 
+1

'open'이 아니라 'utf-8'을 지정하는'codecs.open ' – Paolo

3

django-bakery은 장고 사이트를 베이킹 잘 발달 된 "헬퍼 세트입니다 평면 파일로 출력 "합니다.

관련 문제