我使用几个应用程序(如博客,代码,帐户等)实现简单网站。由于体积较大,我决定将一个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
..........................
答案 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