Flask每个应用程序模板文件夹

时间:2013-04-05 10:28:16

标签: python templates web flask

我使用几个应用程序(如博客,代码,帐户等)实现简单网站。由于体积较大,我决定将一个python文件拆分为应用程序。除了Flask的基本功能之外,我不使用蓝图或其他东西 - 我希望尽可能保持简单。 不幸的是,烧瓶仍然在

中寻找模板
/site
|-> main.py
     from flask import Flask

     app = Flask(__name__)
     app.config.from_pyfile('config.py')

     # Import all views
     from errors.views import *  # Errors hasn't its specific prefix
     from blog.views import *
     from account.views import *
     from mysite.views import *

     if __name__ == "__main__":
         app.run(debug=True)
|-> templates
...................
|->blog
  |-> template
    |-> _layout.html
    |-> index.html
    |-> post.html
  |-> __init__.py
     from main import app
     import blog.views
  |-> views
     from blog import app
     from flask import render_template

     @app.route("/blog/", defaults={'post_id': None})
     @app.route("/blog/<int:post_id>")
     def blog_view(post_id):
         if post_id:
             return "Someday beautiful post will be here with id=%s" % post_id
         else:
             return "Someday beautiful blog will be here"

     @app.route("/blog/tags/")
     def tags_view():
         pass
     ..........................

2 个答案:

答案 0 :(得分:3)

假设您有2个蓝图博客和帐户。您可以按如下方式划分博客和帐户的各个应用(蓝图):

myproject/
    __init__.py
    templates/
        base.html
        404.html
         blog/
            template.html
            index.html
            post.html
         account/
            index.html
            account1.html
    blog/
        __init__.py
        views.py
    account/
        __init__.py
        views.py

在您的blog / views.py中,您可以呈现以下模板:

@blog.route('/')
def blog_index():
    return render_template('blog/index.html')

@account.route('/')
def account_index():
    return render_template('account/index.html')

..等等

答案 1 :(得分:0)

template_folder='templates' 添加到每个应用蓝图声明:

account = Blueprint('account', __name__, template_folder='templates')

详情:https://flask.palletsprojects.com/en/2.0.x/blueprints/#templates