最近学习flask的bootstrap模板相关知识,但是执行程序时报错找不到模板。经过一下午的折腾发现了问题症结所在。
jinja2.exceptions.TemplateNotFound
jinja2.exceptions.TemplateNotFound: bootstrap/base.html
第一种情况:
没有templates
文件夹,因为默认情况下,Flask在程序文件夹中的templates
子文件夹中寻找模板。
解决方案:
在程序文件夹下边新建一个templates
文件夹,将index.html
和user.html
模板文件放进去。如下图所示:
第二种情况:
hello.py
程序中没有bootstrap = Bootstrap(app)
或者bootstrap = Bootstrap(app)
语句放错了位置。
解决方案:
正确添加bootstrap = Bootstrap(app)
语句。
错误示范:bootstrap = Bootstrap(app)
放在了程序最后,依然提示找不到bootstrap/base.html
。
from flask import Flask
from flask import render_template
from flask_bootstrap import Bootstrap
app =Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/user/<name>')
def user(name=None):
return render_template('user.html',name=name)
if __name__=='__main__':
app.run(debug=True)
bootstrap = Bootstrap(app)
正确示范:
from flask import Flask
from flask import render_template
from flask_bootstrap import Bootstrap
app =Flask(__name__)
bootstrap = Bootstrap(app)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/user/<name>')
def user(name=None):
return render_template('user.html',name=name)
if __name__=='__main__':
app.run(debug=True)
正确执行
附模板代码:
index.html文件内容:
<h1>Hello World!</h1>
user.html文件内容:
{% extends "bootstrap/base.html" %}
{% block title %}bill{% endblock %}
{% block navbar %}
<div class="navbar navbar-inverse" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle"
data-toggle="collapse" data-target=".navbar-collapse">
<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="/">bill</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="/">Home</a></li>
</ul>
</div>
</div>
</div>
{% endblock %}
{% block content %}
<div class="container">
<div class="page-header">
<h1>Hello, {{ name }}!</h1>
</div>
</div>
{% endblock %}
网友评论