路由与蓝图

查询所有路由

  1. 命令行方式,前提是export FLASK_APP=app
  1. flask routes
  1. print(app.url_map)
  1. 迭代url.map
  1. @app.route('/')
  2. def index():
  3. data = {}
  4. for rule in app.url_map.iter_rules():
  5. data[rule.endpoint] = rule.rule
  6. return jsonify(data)

蓝图

Flask蓝图提供了模块化管理程序路由的功能,使程序结构清晰、简单易懂。下面分析蓝图的使用方法:
image-20211212201947126
蓝图是独立的,比如一个博客可以将首页,文章详情页,用户页面都独立为单个蓝图,蓝图的创建代码为:

  1. from flask import Blueprint, render_template, request
  2. from apps.article.model import Article
  3. index_bp = Blueprint('index', __name__)
  4. @index_bp.route("/welcome")
  5. def welcome():
  6. return render_template("welcome.html")
  7. @index_bp.route('/')
  8. @index_bp.route('/<int:page>', methods=['GET'])
  9. def index(page=None):
  10. # user = request.
  11. if not page:
  12. page=1
  13. article = Article.query.order_by(Article.pdatetime.desc()).paginate(page=page, per_page=4)
  14. return render_template('index.html', article=article.items, pagination=article)

创建好蓝图之后将蓝图注册在主app中:

  1. from exts import db, bootstrap, md
  2. from apps.user.model import *
  3. from apps.article.model import Article
  4. from apps.categories.model import Categories
  5. def create_app():
  6. app = Flask(__name__, template_folder='../templates/', static_folder='../static/')
  7. app.config.from_object(Config)
  8. bootstrap.init_app(app=app) # bootstrap
  9. m = Moment(app)
  10. md.init_app(app=app)
  11. db.init_app(app) # 数据库
  12. app.register_blueprint(index_bp)
  13. app.register_blueprint(user_bp)
  14. app.register_blueprint(article_bp)
  15. print(app.url_map)
  16. return app