侧边栏壁纸
博主头像
AngYi 博主等级

行动起来,活在当下

  • 累计撰写 68 篇文章
  • 累计创建 28 个标签
  • 累计收到 24 条评论

目 录CONTENT

文章目录

【Flask开发】 2. 路由与蓝图

AngYi
2021-12-12 / 0 评论 / 0 点赞 / 255 阅读 / 0 字

路由与蓝图

查询所有路由

  1. 命令行方式,前提是export FLASK_APP=app

    flask routes
    
  2. print(app.url_map)

  3. 迭代url.map

@app.route('/')
def index():
    data = {}
    for rule in app.url_map.iter_rules():
        data[rule.endpoint] = rule.rule
    return jsonify(data)

蓝图

Flask蓝图提供了模块化管理程序路由的功能,使程序结构清晰、简单易懂。下面分析蓝图的使用方法:

image-20211212201947126

蓝图是独立的,比如一个博客可以将首页,文章详情页,用户页面都独立为单个蓝图,蓝图的创建代码为:

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

0

评论区