2015-12-16 5 views
7

Ich verwende Django rein zum Erstellen von Vorlage (kein Server). Hier ist das Schema I haben:So verwenden Sie Django Templating wie es ist ohne Server

page1.html

{% extends "base.html" %} 
{% block 'body' %} 

    <div class="container"> 
     <img src="./images/{{filename}}" style="padding-top:100px; padding-left:100px" align="center" width="60%" heig 
    </div> 

{% endblock %} 

base.html

<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
     <link rel="stylesheet" type="text/css" href="../src/bootstrap.min.css"> 
     <link rel="stylesheet" type="text/css" href="../src/sticky-footer-navbar.css"> 
     <link rel="icon" href="../images/favicon.ico"> 

     <title>MY TITLE</title> 

    </head> 
    <body> 


<!-- Fixed navbar --> 
    <nav class="navbar navbar-default navbar-fixed-top"> 
     <div class="container"> 
     <div class="navbar-header"> 
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> 
      <span class="sr-only">Toggle navigation</span> 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
      </button> 
      <a class="navbar-brand" href="../index.html">Adjuvant</a> 
     </div> 
     <div id="navbar" class="collapse navbar-collapse"> 
      <ul class="nav navbar-nav"> 
      <li class="active"><a href="../index.html">Home</a></li> 
      <li><a href="#about">About</a></li> 
      <li><a href="mailto:[email protected]">Contact</a></li> 
      </ul> 
     </div><!--/.nav-collapse --> 
     </div> 
    </nav> 
    <!-- End navbar --> 


     <!--- BEGIN INSERT TEMPLATE FOR OTHER PAGE HERE--> 
     {% block 'body' %} 

     {% endblock %} 
     <!--- END TEMPLATE FOR OTHER PAGE HERE--> 



    <footer class="footer"> 
     <div class="container"> 
     <p class="text-muted"> &copy; 2015 &middot; 
    </p> 
     </div> 
    </footer> 


    <!-- Bootstrap core JavaScript 
    ================================================== --> 
    <!-- Placed at the end of the document so the pages load faster --> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
    <script>window.jQuery || document.write('<script src="../src/jquery-1.11.0.min.js"><\/script>')</script> 
    <script src="../src/bootstrap.min.js"></script> 
    <!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> 
    <script src="../src/ie10-viewport-bug-workaround.js"></script> 




    </body> 


</html> 

code_to_make_template.py

from django.template import Template, Context, loader 
from django.conf import settings 
settings.configure() 

template = open("htmls/src/templates/page1.html").read() 
t = Template(template) 
filename = "mypicture.svg" 
c = Context({'filename':filename}) 
output_string = t.render(c) 

Die Verzeichnisstruktur sieht wie folgt aus:

current_dir 
    |___ code_to_make_template.py 
    |___ html 
     |_ src 
      |_ templates 
        |_ base.html 
        |_ page1.html 

Aber wenn ich code_to_make_template.py laufen habe ich diese Meldung:

django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet. 

Was ist der richtige Weg, es zu tun?

+0

exakt die gleichen Fragen hier gefragt wurde: http: // stackoverflow.com/questions/98135/how-doi-i-use-django-templates-without-the-rest-of-django?rq=1 –

Antwort

5

django.core.exceptions.AppRegistryNotReady: Die Apps sind noch nicht geladen.

Nach dem Standalone scripts Dokumentation Absatz, Sie müssen nur Setup Django:

>>> from django.conf import settings 
>>> settings.configure() 
>>> 
>>> import django 
>>> django.setup() 
>>> 
>>> from django.template import Template, Context, loader 
>>> t = Template("Hello, {{name}}") 
>>> c = Context({'name': 'world'}) 
>>> t.render(c) 
u'Hello, world' 
+0

Benötigen Sie noch 'settings.configure()', wenn Sie 'django.setup()' aufrufen? – approxiblue

+1

@approxiblue Ich fürchte ja, bekomme 'django.core.exceptions.ImproperlyConfigured: Angeforderte Einstellung LOGGING_CONFIG, aber Einstellungen sind nicht konfiguriert. Sie müssen entweder die Umgebungsvariable DJANGO_SETTINGS_MODULE definieren oder settings.configure() aufrufen, bevor Sie auf die Einstellungen zugreifen.wenn 'configure()' noch nicht aufgerufen wird..Danke! – alecxe

3

Wenn Sie nicht wirklich suchen, um django Modelle/apps verwenden Etcetera Sie nur mit der Jinja template language aussehen wollen könnte (was django verwendet Vorlagen zu machen), wenn Sie etwas anderes wie Apache oder nginx verwenden möchten, um die Ausgabe zu dienen als einfacher HTML.

+4

Django verwendet standardmäßig die Django-Vorlagensprache, von der sich Jinja inspirieren lässt. Django unterstützt Jinja ebenfalls. – approxiblue

1

Nur um sicherzugehen ich dies zu verstehen, suchen Sie regelmäßig HTML-Seiten auf der Basis zu erzeugen, Django Templating Engine? Wenn ja, verwende ich den statischen Site-Generator django-medusa. Vielleicht ist es ein Overkill für das, was du tust, aber ich benutze es, um eine lokale Django-Instanz und generisches statisches HTML auszuführen, das ich dann an verschiedene Orte (godaddy, s3 und mehr) hochlade.

Es ist ein wenig Arbeit einzurichten, aber mit ihm können Sie einfach nicht nur das django Template-System verwenden, aber auch Modelle, Abfragen usw.

Verwandte Themen