2015-12-16 53 views
7

我使用Django純粹用於創建模板(無服務器)。 這裏是我的方案:如何在沒有服務器的情況下使用Django模板

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) 

目錄結構是這樣的:

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

但是當我運行code_to_make_template.py我得到這個消息:

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

怎樣做正確的方式?

+0

確切同樣的問題在這裏問:HTTP:// stackoverflow.com/questions/98135/how-do-i-use-django-templates-without-the-rest-of-django?rq=1 –

回答

5

django.core.exceptions.AppRegistryNotReady:應用尚未加載。

按照Standalone scripts文檔段落,你只需要設置的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

當你調用'django.setup()'時,你還需要'settings.configure()'嗎? – approxiblue

+1

@approxiblue恐怕是的,得到'django.core.exceptions.ImproperlyConfigured:請求的設置LOGGING_CONFIG,但設置沒有配置。您必須先定義環境變量DJANGO_SETTINGS_MODULE或在訪問設置之前調用settings.configure()。如果configure()不在之前調用。 – alecxe

3

如果你不想實際使用django模型/應用etcetera,你可能想看看只使用Jinja template language(django用來製作模板),如果你想使用其他類似的apache或nginx來提供輸出作爲純html。

+4

默認情況下,Django實際上使用Django模板語言,Jinja從中獲得靈感。 Django也支持Jinja。 – approxiblue

1

只是爲了確保我理解這一點,你要買基於普通的html頁面Django的模板引擎?如果是這樣,我一直在使用django-medusa靜態站點生成器。也許這對你正在做的事情有點過大,但是我用它來運行本地django實例和通用靜態html,然後我將它們上傳到各個地方(godaddy,s3等)。

這是工作的一點點建立,但有了它,你可以輕鬆地使用不只是Django的模板系統,而​​且模型,查詢等

相關問題