如何使用Flask Blueprint创建索引路由

时间:2019-04-30 00:08:04

标签: python flask

试图组织我的项目,我无法访问索引页面,例如,当我访问localhost:5000/时,它正在调用posts/index。我想打电话给/templates/index,但找不到示例。

示例结构:

|--__init__.py    
/views
     |--posts.py
     |--users.py
    /templates
     |_/posts
       |--index.html
       |--add.html
     |_/users
       |--index.html
       |--add.html
     |--index.html

初始化文件,我正在导入蓝图

from website.views import posts
from website.views import users
app.register_blueprint(posts.mod)
app.register_blueprint(users.mod) 

views文件,调用路由。此示例为posts.py

mod = Blueprint('posts',__name__)

@mod.route('/')
def index():
 return render_template('posts/index.html')

@mod.route('/add')
def add():
 return render_template('posts/add.html')

@mod.route('/edit')
def edit():
 return render_template('posts/edit.html')

2 个答案:

答案 0 :(得分:0)

默认情况下,烧瓶需要呈现页面(html)时,它会查看templates目录。

在您的情况下,您指定了posts/index.html,这意味着它将被转换为templates/posts/index.html。您只需要简单地表明您只想渲染index.html,它就会自动引用templates/index.html

您可以例如使用

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

不过,您可以在Rendering Templates

中找到更多详细信息

答案 1 :(得分:0)

您可以在蓝图注册期间添加前缀。

from website.views import posts

app.register_blueprint(posts.mod, url_prefix='/posts')

# /
@app.route('/')
def index():
 return render_template('index.html')
mod = Blueprint('posts',__name__)

# posts/
@mod.route('/')
def index():
 return render_template('posts/index.html')

# posts/add
@mod.route('/add')
def add():
 return render_template('posts/add.html')

# posts/edit
@mod.route('/edit')
def edit():
 return render_template('posts/edit.html')

来源:http://flask.pocoo.org/docs/1.0/blueprints/#registering-blueprints