路由与蓝图
查询所有路由
- 命令行方式,前提是
export FLASK_APP=app
flask routes
print(app.url_map)
- 迭代url.map
@app.route('/')
def index():
data = {}
for rule in app.url_map.iter_rules():
data[rule.endpoint] = rule.rule
return jsonify(data)
蓝图
Flask蓝图提供了模块化管理程序路由的功能,使程序结构清晰、简单易懂。下面分析蓝图的使用方法:
蓝图是独立的,比如一个博客可以将首页,文章详情页,用户页面都独立为单个蓝图,蓝图的创建代码为:
from flask import Blueprint, render_template, request
from apps.article.model import Article
index_bp = Blueprint('index', __name__)
@index_bp.route("/welcome")
def welcome():
return render_template("welcome.html")
@index_bp.route('/')
@index_bp.route('/<int:page>', methods=['GET'])
def index(page=None):
# user = request.
if not page:
page=1
article = Article.query.order_by(Article.pdatetime.desc()).paginate(page=page, per_page=4)
return render_template('index.html', article=article.items, pagination=article)
创建好蓝图之后将蓝图注册在主app中:
from exts import db, bootstrap, md
from apps.user.model import *
from apps.article.model import Article
from apps.categories.model import Categories
def create_app():
app = Flask(__name__, template_folder='../templates/', static_folder='../static/')
app.config.from_object(Config)
bootstrap.init_app(app=app) # bootstrap
m = Moment(app)
md.init_app(app=app)
db.init_app(app) # 数据库
app.register_blueprint(index_bp)
app.register_blueprint(user_bp)
app.register_blueprint(article_bp)
print(app.url_map)
return app