2016-03-15 89 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 %}--> 

只有当我删除的评论之一,该程序可以被正确执行。我不知道为什么,评论者仍然工作。