nal*_*zok 6 python templates flask twitter-bootstrap flask-bootstrap
我正在学习 Flask Web 开发,我正在学习的教程介绍了一个名为Flask-Bootstrap的扩展。要使用这个扩展,你必须先初始化它,像这样:
from flask_bootstrap import Bootstrap
# ...
bootstrap = Bootstrap(app)
Run Code Online (Sandbox Code Playgroud)
对我来说很奇怪bootstrap,我的模块的其余部分没有使用该变量。但是,如果我注释掉这一行,jinja2.exceptions.TemplateNotFound则会引发异常。此外,使用的模板以这一行开头:
{% extends "bootstrap/base.html" %}
Run Code Online (Sandbox Code Playgroud)
但我没有指定目录/bootstrap下/templates!
我想知道发生了什么:
bootstrap = Bootstrap(app)行吗?bootstrap/base.html?\n\nbootstrap = Bootstrap(app) 行“初始化应用程序上的扩展”。
\nbootstrap/base.html 位于 Flask-Bootstrap 包中。
\n
要理解这一点,你必须了解“Flask 的模板搜索路径”
\n所以 Flask-Bootstrap 实际上将蓝图注册到您的应用程序\xef\xbc\x9a
\nclass Bootstrap(object):\n def __init__(self, app=None):\n if app is not None:\n self.init_app(app)\n\n def init_app(self, app):\n blueprint = Blueprint(\n \'bootstrap\',\n __name__,\n template_folder=\'templates\',\n static_folder=\'static\',\n static_url_path=app.static_url_path + \'/bootstrap\',\n subdomain=app.config[\'BOOTSTRAP_LOCAL_SUBDOMAIN\'])\n\n app.register_blueprint(blueprint)\nRun Code Online (Sandbox Code Playgroud)\n通过设置EXPLAIN_TEMPLATE_LOADING可以清楚地看到:
\napp = Flask(__name__)\napp.config[\'EXPLAIN_TEMPLATE_LOADING\'] = True\nRun Code Online (Sandbox Code Playgroud)\n然后
\nexport FLASK_ENV=development\nflask run\nRun Code Online (Sandbox Code Playgroud)\n当您访问该页面时:
\n[2018-07-12 15:28:58,659] INFO in debughelpers: Locating template "user.html":\n1: trying loader of application "hello"\n class: jinja2.loaders.FileSystemLoader\n encoding: \'utf-8\'\n followlinks: False\n searchpath:\n - /root/learn/python-lab/Flask/flasky/templates\n -> found (\'/root/learn/python-lab/Flask/flasky/templates/user.html\')\n2: trying loader of blueprint "bootstrap" (flask_bootstrap)\n class: jinja2.loaders.FileSystemLoader\n encoding: \'utf-8\'\n followlinks: False\n searchpath:\n - /root/learn/python-lab/Flask/flasky/venv/lib/python3.6/site-packages/flask_bootstrap/templates\n -> no match\n################################################################# Note here #######\n[2018-07-12 15:28:58,677] INFO in debughelpers: Locating template "bootstrap/base.html":\n1: trying loader of application "hello"\n class: jinja2.loaders.FileSystemLoader\n encoding: \'utf-8\'\n followlinks: False\n searchpath:\n - /root/learn/python-lab/Flask/flasky/templates\n -> no match ### in app path not found\n2: trying loader of blueprint "bootstrap" (flask_bootstrap)\n class: jinja2.loaders.FileSystemLoader\n encoding: \'utf-8\'\n followlinks: False\n searchpath:\n - /root/learn/python-lab/Flask/flasky/venv/lib/python3.6/site-packages/flask_bootstrap/templates\n ## in blueprint path found the bootstrap/base.html\n -> found (\'/root/learn/python-lab/Flask/flasky/venv/lib/python3.6/site-packages/flask_bootstrap/templates/bootstrap/base.html\')\n127.0.0.1 - - [12/Jul/2018 15:28:58] "GET /user/Yao HTTP/1.1" 200 -\nRun Code Online (Sandbox Code Playgroud)\n| 归档时间: |
|
| 查看次数: |
7067 次 |
| 最近记录: |