2014-03-04 22 views
13

Ich bin neu in Django, und ich bin mir ziemlich sicher, dass ich eine Möglichkeit dazu gelesen oder gehört habe, aber ich kann sie nirgends finden.Wie erzeuge ich eine statische HTML-Datei aus einer Django-Vorlage?

Anstatt die gerenderte Ausgabe von einer Vorlage an einen Browser zu senden, möchte ich eine HTML-Datei erstellen, die dann bedient werden kann, ohne jedes Mal den Renderprozess durchlaufen zu müssen. Ich entwickle auf einem System, das vom Server unserer Hauptwebsite getrennt ist, und ich muss den Benutzern regelmäßig Schnappschüsse meiner Daten zur Verfügung stellen, ohne ihnen Zugriff auf das Entwicklungssystem zu gewähren.

Meine Intuition sagt, dass ich irgendwie die Antwort auf eine Datei umleiten könnte, aber ich sehe es nicht in den Dokumenten oder in anderen Posts hier.

+0

Sie können eine Vorlage immer in eine Zeichenfolge rendern, die dann mit Hilfe von Vanillepython als Datei gespeichert werden kann. Umfasst Ihr Anwendungsfall mehr als das? – Brandon

+0

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

Antwort

14

Sie können Djangos Vorlagenlader verwenden, um Ihre Vorlage, einschließlich des von Ihnen übergebenen Kontexts, als Zeichenfolge zu rendern und dann im Dateisystem zu speichern. Wenn Sie diese Datei auf einem externen System wie Amazon S3 speichern müssen, können Sie die Bibliothek Boto verwenden.

Hier ist ein Beispiel dafür, wie eine Ansicht in eine Datei zu machen, einen optionalen Abfragezeichenfolgeflag Parameter als Auslöser verwenden ...

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

nicht "offen" aber 'codecs.open' spezifiziert' utf-8' – Paolo

3

django-bakery ist eine gut entwickelte „Satz von Helfern für Ihre Django-Website Backen als flache Dateien ".