2016-03-15 84 views
-1

我使用的瓶製作一個網站,這個目錄:如何使用的Jinja2在燒瓶

enter image description here

我要定義一個名爲「base.html文件」廉政模板目錄Jinja2的模板頁面,它可以在任何地方引用:

<!doctype html> 
<html lang="zh-CN"> 
{% block header %} 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <title>Mind Fly</title> 
    <link rel="shortcut icon" href="../static/images/head.ico"/> 
{% endblock %} 

{% block body %} 

{% endblock %} 

{% block footer %} 

    <div class="bottom"> 
     <div class="container"> 
      ..... 
     </div> 
    </div> 
{% endblock %} 
</html> 

這裏是主頁:

{% extends "base.html" %} 
    {% block body %} 
    <div> 
     <ul id="content"> 
      <li><img src="../static/images/book.jpg" ></li> 
      <li><img src="../static/images/think.jpg" ></li> 
     </ul> 
    </div> 
    {% endblock %} 

這裏是register.py:

from flask import render_template, Flask 
@app.route('/') 
def index(): 
    return render_template('home.html') 

if __name__ == '__main__': 
    app.run() 

我這個執行時,提出了「間隔誤差500」,如果我不引用base.html文件,我可以得到正確的主頁。我不知道jinja2模板的定義或參考是否是錯誤的。感謝

+1

我無法重現您的錯誤。請[edit]包含[mcve]。啓用調試或日誌記錄:http://stackoverflow.com/questions/32722143/flask-application-traceback-doesnt-show-up-in-server-log,500本身並沒有用。 – davidism

+0

謝謝,我啓用了調試,並找出原因。這是因爲我在一個頁面中定義了兩個相同名稱的模板。 – thiiiiiking

回答

1

我的代碼唯一錯誤的是您需要初始化您的app變量。

app = Flask(__name__)加上app = Flask(__name__)正好在你輸入的register.py下面,你應該很好走!

希望這會有所幫助!

0

檢查此密碼 我已經在runnable上運行您的代碼。您的應用目錄中存在一些問題,例如您需要將init.py重命名爲__init__py。還導入您的應用程序在你的register.py

從應用程序導入您的 模板都很好

0

我發現了原因,那是因爲我在一個頁面中定義的兩個同名的模板。即使我註釋掉了其中的一個,但仍然引發錯誤,這樣的:

{% block body %} 
{% endblock %} 
<!--{% block body %} 
{% endblock %}--> 

只有當我刪除的評論之一,該程序可以被正確執行。我不知道爲什麼,評論者仍然工作。