python flask框架学习(二):flask 蓝图 blueprint的应用

概述

  • 蓝图的作用:对视图函数进行分门别类即模块化 ,使项目结构更加清晰,方便管理。
  • 蓝图相当于子app,所用的函数和主app类似。
  • 如果不用蓝图,分离视图函数在不同页面,用主app注册,会出现循环引用错误。
1. user.py 用户模块,导入Blueprint,实例化一个蓝图对象
from flask import Blueprint

# 1. url_prefix & static_folder & template_folder为可选参数。
# 2. 不定义template_folder,默认去主app配置的模板目录下查找模板(一般为templates);
# 3. 如果定义了template_folder,且template_folder与templates的模板文件重名,优先使用templates的模板文件。
# 4. static_folder用法和template_folder类似。
# 5. 项目不大的话,尽量用主app默认的template_folder和static_folder。
user_bp = Blueprint('user', __name__, url_prefix='/user',template_folder='user_templates', static_folder='user_static')  

@user_bp.route('/personal')
def personal():
    return 'This is a personal central page'
2. 在主app文件中注册蓝图:
from flask import Flask
from views.user import user_bp
app = Flask(__name__, template_folder='templates',static_folder='static')  #  template_folder和static_folder为可选参数
app.register_blueprint(user_bp)

...
3. 通过http://127.0.0.1:5000/user/personal访问
4. 使用url_for()跳转到相应的蓝图时,需加上模块名称。

用法:url_for('user.personal')

5. 蓝图实现子域名映射

你可能感兴趣的:(python flask框架学习(二):flask 蓝图 blueprint的应用)