如何使用Flask Blueprints找到我的模板?

时间:2015-03-24 18:12:16

标签: python-2.7 flask

我搜索了所有可以在SO上找到的内容,包括flask blueprint template folder

/root
 __init__.py
 run.py
    /hrms
      __init__.py
      views.py
      models.py
    /static
    /templates
        __init__.py
        layout.html
        /hr
            __init__.py
            hr_template_test.html

我也尝试过:

/hrms
  __init__.py
  views.py
  models.py
  /templates
      __init__.py
      hr_template_test.html

无论我把hr_template_test.html文件放在哪里,Flask都找不到它。以下是__init__.py中的内容:

from flask import Blueprint, render_template

hrms_blue = Blueprint('hrms', __name__, template_folder='templates')

@hrms_blue.route('/')
def index():
    return render_template('hrms_data_view.html')

run.py

from flask import Flask
from flask_debugtoolbar import DebugToolbarExtension
from application.views.hrms import hrms_blue

app = Flask(__name__)
app.register_blueprint(hrms_blue, url_prefix='/<hrms_id>')

我试过了:

return render_template('hr/hrms_data_view.html')
return render_template('application/templates/hr/hrms_data_view.html')
return render_template('templates/hr/hrms_data_view.html')
return render_template('hrms_data_view.html')

http://127.0.0.1/hrms

并且Jinja2抱怨它无法找到html文件。

我从模板和hr中取出了__init__.py。不,我得到,TypeError: index() takes no arguments (1 given)

1 个答案:

答案 0 :(得分:0)

您可能遇到循环导入问题。 你应该尝试:

def register(app):
    from __init__ import hrms_blue
    app.register_blueprint(hrms_blue)

register(app)

而不是:

app.register_blueprint(hrms_blue, url_prefix='/<hrms_id>')