随着功能的添加,路由越来越多,view层的拆分变成了刚需
蓝图的杀手锏是将你的应用组织成不同的组件,比如把这里的admin,main,course等相关的视图方法分为组件。这时我们可以
创建三个蓝图实现这两个独立的组件。static文件存放的是静态文件,templates是模板。
目录结构

Blueprint
首先是我们项目的配置文件(config.py)
# -*- coding: utf-8 -*-
import os
basedir = os.path.abspath(os.path.dirname(__file__))
class Config:
    SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True
    FLASKY_MAIL_SUBJECT_PREFIX = '[Flasky]'
    FLASKY_MAIL_SENDER = 'Flasky Admin <flasky@example.com>'
    FLASKY_ADMIN = os.environ.get('FLASKY_ADMIN')
    @staticmethod
    def init_app(app):
        pass
 
# 开发环境的配置
class DevelopmentConfig(Config):
    DEBUG = True
    MAIL_SERVER = 'smtp.googlemail.com'
    MAIL_PORT = 587
    MAIL_USE_TLS = True
    MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
    MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
    SQLALCHEMY_DATABASE_URI = "mysql://root:123456@localhost/flasktestdb"
    RECAPTCHA_PUBLIC_KEY = '6LeYIbsSAAAAACRPIllxA7wvXjIE411PfdB2gt2J'
    RECAPTCHA_PRIVATE_KEY = '6LeYIbsSAAAAAJezaIq3Ft_hSTo0YtyeFG-JgRtu'
 
# 测试环境的配置
class TestingConfig(Config):
    TESTING = True
    SQLALCHEMY_DATABASE_URI = "mysql://root:123456@localhost/flasktestdb"
    RECAPTCHA_PUBLIC_KEY = '6LeYIbsSAAAAACRPIllxA7wvXjIE411PfdB2gt2J'
    RECAPTCHA_PRIVATE_KEY = '6LeYIbsSAAAAAJezaIq3Ft_hSTo0YtyeFG-JgRtu'
 
 
# 生产环境的配置
class ProductionConfig(Config):
    SQLALCHEMY_DATABASE_URI = "mysql://root:123456@localhost/flasktestdb"
 
 
    RECAPTCHA_PUBLIC_KEY = '6LeYIbsSAAAAACRPIllxA7wvXjIE411PfdB2gt2J'
    RECAPTCHA_PRIVATE_KEY = '6LeYIbsSAAAAAJezaIq3Ft_hSTo0YtyeFG-JgRtu'
 
 
config = {
    'development': DevelopmentConfig,
    'testing': TestingConfig,
    'production': ProductionConfig,
    'default': DevelopmentConfig
}
app应用(app/__init__.py)

# -*- coding: utf-8 -*-
from flask import Flask, render_template
from flask_bootstrap import Bootstrap
from flask_mail import Mail
from flask_sqlalchemy import SQLAlchemy
from config import config
from flask_login import LoginManager
 
bootstrap = Bootstrap()
mail = Mail()
db = SQLAlchemy()
login_manager = LoginManager()
# None basic strong
login_manager.session_protection = "strong"
login_manager.login_view = "main.login"
login_manager.login_message = u'请先登录'
app = Flask(__name__, static_url_path='')
 
# jquery.tmpl 和 jinja2 模板语法冲突 修改 jinja2的模板语法
app.jinja_env.variable_start_string = '{{ '
app.jinja_env.variable_end_string = ' }}'
 
def create_app(config_name):
    app.config.from_object(config[config_name])
    config[config_name].init_app(app)
    bootstrap.init_app(app)
    mail.init_app(app)
    db.init_app(app)
    login_manager.init_app(app)
    
    # 项目启动时自动创建数据库
    with app.test_request_context():
        from .models import User,Document,Video
        db.create_all()
 
 
    # 注册main组件的蓝图
    from .main import main as main_blueprint
    app.register_blueprint(main_blueprint)
    
    # 注册admin组件的蓝图
    from .admin import admin as admin_blueprint
    app.register_blueprint(admin_blueprint)
    
    # 注册course组件的蓝图
    from .course import course as course_blueprint
    app.register_blueprint(course_blueprint)
 
    return app
app中的models.py 文件是数据库模型,emails.py 是发邮件
运行文件(manager.py)
# -*- coding: utf-8 -*-
import os
from app import create_app, db
from flask_script import Manager,Server
 
app = create_app(os.getenv('FLASK_CONFIG') or 'default')
 
manager = Manager(app)
#开启多线程
manager.add_command("runserver", Server(threaded=True))
 
if __name__ == '__main__':
    manager.run()
admin组件(admin/__init__.py)
# -*- coding: utf-8 -*-
from flask import Blueprint
#创建蓝图admin
admin = Blueprint('admin', __name__)
#从当前文件夹导入views和errors文件,定义的视图/路由就会加载。
from . import views,errors
main和course包中的__init__.py文件是一样的创建,注意要把名字改一下。

每个蓝图的错误页面是一样的(errors.py)
# -*- coding: utf-8 -*-
from flask import render_template
from . import admin
 
@admin.app_errorhandler(404)
def page_not_found(e):
    return render_template('404.html'), 404
 
@admin.app_errorhandler(500)
def internal_server_error(e):
    return render_template('500.html'), 500
在错误页面里面只定义了404和500的错误

flask 蓝图框架已经搭建完成,剩下的只需要完成各个模块的功能路由即可。
--------------------- 
作者:凡夫俗子66 
来源:CSDN 
原文:https://blog.csdn.net/m0_38061194/article/details/79310437 
版权声明:本文为博主原创文章,转载请附上博文链接!

python flask Blueprint搭建相关推荐

  1. python flask 快速搭建 WEB 实战

    python flask 快速搭建 WEB 实战 tags: flask 文章目录 python flask 快速搭建 WEB 实战 1. app.py配置首页 2. views.py配置首页 3. ...

  2. Python+Flask框架搭建可视化网站

    Python+Flask框架搭建可视化网站 一.项目结构 二.app.py from flask import Flask,render_template import sqlite3app = Fl ...

  3. NGINX+UWSGI+PYTHON+FLASK环境搭建——————学习笔记

    搭建环境 安装依赖包 #yum -y install gcc gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel GroOP g ...

  4. flask manage port_nginx+uwsgi+python+flask环境搭建

    环境的准备 # yum -y install gcc gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel GeoIP gd li ...

  5. 利用python flask框架搭建算法接口遇到的错误汇总

    1.404 post方式用(url="xxx",data="xxx") get方式用(url="xxx",params="xxx& ...

  6. Python Flask 实现 HTML 文件压缩,9 级压缩

    本博客详细为你解释 Python Flask 框架下的 HTML 文件压缩内容,其第三方模块也可用在其他框架中. 本案例是基于 Python Flask 进行搭建,所以需要提前搭建一个 Flask 项 ...

  7. tensorflow+python flask进行手写识别_python+flask搭建CNN在线识别手写中文网站!简直太屌了!...

    原标题:python+flask搭建CNN在线识别手写中文网站!简直太屌了! 使用python+flask搭建的一个网站,然后从网页的写字板上获取鼠标手写的汉字经过转码后传回后台,并经过图片裁剪处理之 ...

  8. 【项目10】python+flask搭建CNN在线识别手写中文网站

    使用python+flask搭建的一个网站,然后从网页的写字板上获取鼠标手写的汉字经过转码后传回后台,并经过图片裁剪处理之后传入CNN手写中文识别的模型中进行识别,最后通过PIL将识别结果生成图片,最 ...

  9. [python]用flask框架搭建微信公众号的后台

    用flask框架搭建微信公众号的后台 最近用python写了点爬虫,为了要让爬取的数据能够随时显示在我眼前,并实时根据我的指令返回数据.于是采用微信公众号做这个显示窗口,既能发送指令也能显示简单的相关 ...

最新文章

  1. MySQL(二)——DQL数据查询语言
  2. 都说Hadoop与大数据平台难懂?我就花了6分钟,但是看得明明白白
  3. ROS笔记——Create a cropped bagfile(创建一个已裁剪的包文件)
  4. 数据结构HashMap(Android SparseArray 和ArrayMap) 1
  5. win64 Python下安装PIL出错解决2.7版本 (3.6版本可以使用)
  6. Flash网络游戏简单的源代码
  7. iOS TestFlight Beta版本测试
  8. cadence软件安装教程
  9. NetSuite 使用库存盘点
  10. SpringBoot的高级教程
  11. UE全景图,碰到the outpout directory时的问题
  12. (基因功能 基因表达调控)研究方案
  13. 将系统从机械硬盘迁移至固态硬盘上
  14. landsat7数据预处理
  15. UE风格化Day7-maya的AO烘焙和SP绘制材质
  16. 蹭个热度:我只希望孩子心中有爱,眼里有光……
  17. 易经卦象基本类别与其类象运用思路
  18. [剑指Offer]-二叉树的深度
  19. java 电子秤串口通信_电子秤重量读取(串口通讯)
  20. 数据库----数据查询

热门文章

  1. apple mach-o linker (id) error
  2. 【年少的风】C#小学生算式×××2
  3. 高扫后督解决方案 力助银行内部核查
  4. 数据探查_数据科学家,开始使用探查器
  5. java http2_探索HTTP/2: HTTP 2协议简述(原)
  6. Keras框架:人脸检测-mtcnn思想及代码
  7. 谁是赢家_赢家的真正作品是股东
  8. my-medium.cnf_您的手机如何打开medium.com-我将让门卫和图书管理员解释。
  9. linux 机器格式化_为什么机器人应该为我们格式化代码
  10. 及时沟通的重要性_沟通与代码同样重要