路由与蓝图
查询所有路由
- 命令行方式,前提是
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.rulereturn jsonify(data)
蓝图
Flask蓝图提供了模块化管理程序路由的功能,使程序结构清晰、简单易懂。下面分析蓝图的使用方法:
蓝图是独立的,比如一个博客可以将首页,文章详情页,用户页面都独立为单个蓝图,蓝图的创建代码为:
from flask import Blueprint, render_template, requestfrom apps.article.model import Articleindex_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=1article = 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, mdfrom apps.user.model import *from apps.article.model import Articlefrom apps.categories.model import Categoriesdef create_app():app = Flask(__name__, template_folder='../templates/', static_folder='../static/')app.config.from_object(Config)bootstrap.init_app(app=app) # bootstrapm = 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
