3.3 单蓝图多模块拆分视图函数
蓝图,他的出发点,是为了分模块的。什么是模块级别的呢,比如一个web系统属于一个web模块;一个提供给移动端使用的api是一个api模块;一个内容管理系统是一个CMS。
我们不应该讲book,user这样的不同类别的py文件,做成多个蓝图(这样不是不行,只是小题大做了)
正确的方式是,在一个模块的初识文件中定义蓝图对象,这个模块的不同文件都引入这个蓝图对象来注册路由函数。并在模块的初始化文件中引入这些py文件来完成试图函数注册代码的执行
book.py
from flask import jsonify
from helper import is_isbn_or_key
from yushu_book import YuShuBook
# 引入web模块
from . import web
@web.route("/book/search/<q>/<page>")
def search(q, page):
"""
搜索书籍路由
:param q: 关键字 OR isbn
:param page: 页码
"""
isbn_or_key = is_isbn_or_key(q)
if isbn_or_key == 'isbn':
result = YuShuBook.search_by_isbn(q)
else:
result = YuShuBook.search_by_key(q)
return jsonify(result)
后面还会有user模块。我们这里先建立一段伪代码 user.py
from . import web
@web.route("/user/login")
def login():
return "success"
web/__init__.py
from flask import Blueprint
web = Blueprint('web', __name__)
# 在这里导入不同文件,完成视图函数的注册
from app.web import book
from app.web import user
Last updated
Was this helpful?