【问题标题】:Unable to find template with BluePrints Flask无法使用 BluePrints Flask 找到模板
【发布时间】:2017-05-26 08:56:11
【问题描述】:

我正在尝试采用模块化方法来设计我的 Flask 应用程序。

所以每个模块都是多条路线。见下文

模板文件夹

我的 home_routes.py 的内容

from flask import Blueprint, request, session, abort
from flask import render_template


def home_blueprints(app):
    home_routes = Blueprint("home_routes", __name__, template_folder='../../templates', static_folder='../../static')

    @home_routes.route('/home/Links')
    def links():
        return render_template('links.html')

    @home_routes.route('/home/Confirmation')
    def confirmation():
        return render_template('Confirmation.html')

    @home_routes.route('/')
    def main():
        return render_template('main.html')

    @home_routes.route('/home/Contactus', methods=['GET', 'POST'])
    def contact():
        if request.method == "POST":
            token = session.pop('_csrf_token', None)
            if not token or token != request.form.get('_csrf_token'):
                abort(403)
        return render_template('GoogleForm.html')


    app.register_blueprint(home_routes)

believe_routes.py 的内容

from flask import Blueprint
from flask import render_template


def believe_blueprints(app):
    believe_routes = Blueprint("believe_routes", __name__, template_folder='../../templates', static_folder='../../static')

    @believe_routes.route('/home/Believe/Truth_About_God')
    def truth_about_God():
        return render_template('The_Truth_Concerning_God.html')

    @believe_routes.route('/home/Believe/Truth_We_Believe')
    def the_truth_we_beleive():
        return render_template('The_Truth_We_Believe.html')

    @believe_routes.route('/home/Believe/Truth_About_Christ')
    def truth_about_christ():
        return render_template('The_Truth_About_Christ.html')

    @believe_routes.route('/home/Believe/Truth_About_Church')
    def truth_about_church():
        return render_template('The_Truth_About_Church.html')

    @believe_routes.route('/home/Believe/Truth_About_Salvation')
    def truth_about_salvation():
        return render_template('The_Truth_About_Salvation.html')

    @believe_routes.route('/Believe')
    def truth_we_believe():
        return render_template('Truth_We_Believe.html')

    app.register_blueprint(believe_routes)

init.py的内容

from home_routes import home_blueprints
from believe_routes import believe_blueprints

def configure_blueprints(app):
    home_blueprints(app)
    believe_blueprints(app)

只有 home_routes 有效。相信路由中的 URL 不起作用。我得到一个 404

INFO     2017-05-26 18:01:44,325 module.py:813] default: "GET /home/Believe/Truth_About_Christ HTTP/1.1" 404 233

我从 create_app 调用 configure_blueprints(app),然后从 main.py 调用它。

请有任何想法。

【问题讨论】:

  • 可以分享一下你的模板文件夹截图吗?
  • 已添加模板文件夹的屏幕截图。
  • 谢谢。实际上,我的最终设置是正确的。我无法弄清楚到底是什么导致了这个错误。

标签: python flask


【解决方案1】:

404不是模板的原因,也许你可以试试这段代码查看蓝图是否注册到flask实例,你可以把你的输出放回去了解更多细节......

#!/usr/bin/env python
# encoding: utf-8
from flask import Flask

from home_routes import home_blueprints
from believe_routes import believe_blueprints


app = Flask('demo')


def configure_blueprints(app):
    home_blueprints(app)
    believe_blueprints(app)

configure_blueprints(app)
print(app.url_map)

我希望这会对你有所帮助..

【讨论】:

  • 我在 url_map 中看到以下内容
  • Map([home_routes.confirmation>, home_routes.contact>, home_routes.links>, home_routes.map>, admin.admin_landing>, home_routes.main>, ' (HEAD, OPTIONS, GET) - > static>, ' (HEAD, OPTIONS, GET) -> home_routes.static>, ' (HEAD, OPTIONS, GET) -> admin.static>])
  • believe_blueprints 没有注册到 Flask,可能代码有问题,你能粘贴所有调用configure_blueprints 的代码吗? @VinayJoseph
猜你喜欢
  • 2020-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-14
  • 1970-01-01
  • 2020-11-15
相关资源
最近更新 更多