python flask Blueprint搭建
2018-02-11 15:14
435 查看
随着功能的添加,路由越来越多,view层的拆分变成了刚需
蓝图的杀手锏是将你的应用组织成不同的组件,比如把这里的admin,main,course等相关的视图方法分为组件。这时我们可以
创建三个蓝图实现这两个独立的组件。static文件存放的是静态文件,templates是模板。
运行文件(
每个蓝图的错误页面是一样的(
flask 蓝图框架已经搭建完成,剩下的只需要完成各个模块的功能路由即可。
蓝图的杀手锏是将你的应用组织成不同的组件,比如把这里的admin,main,course等相关的视图方法分为组件。这时我们可以
创建三个蓝图实现这两个独立的组件。static文件存放的是静态文件,templates是模板。
目录结构
Blueprint
首先是我们项目的配置文件(config.py)# -*- coding: utf-8 -*-app应用(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/__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,Docu bd28 ment,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 appapp中的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/main和course包中的__init__.py)
[code]# -*- coding: utf-8 -*-
from flask import Blueprint
#创建蓝图admin
admin = Blueprint('admin', __name__)
#从当前文件夹导入views和errors文件,定义的视图/路由就会加载。
from . import views,errors
__init__.py文件是一样的创建,注意要把名字改一下。
每个蓝图的错误页面是一样的(
errors.py)在错误页面里面只定义了404和500的错误
[code]# -*- 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
flask 蓝图框架已经搭建完成,剩下的只需要完成各个模块的功能路由即可。
相关文章推荐
- Python使用Flask搭建RESTful API
- windows下的python flask环境搭建
- python flask newsmeme 搭建 安装
- Python中使用Flask、MongoDB搭建简易图片服务器
- Python Flask 蓝图Blueprint
- 基于Flask框架的Python web程序的开发实战 <一> 环境搭建
- Windows下Python环境搭建,IDE:Eclipse+Pydev+Flask
- 用python flask搭建一个网站[二]——使用bootstrap模板
- Python Flask 开发环境搭建(Windows)
- 搭建python2.7环境、python与eclipse配置、以及安装Flask框架,建立web项目
- Python中使用Flask、MongoDB搭建简易图片服务器
- virtualenv 环境下 Nginx + Flask + Gunicorn+ Supervisor 搭建 Python Web
- Python Flask 开发环境搭建(Windows)
- Python中使用Flask、MongoDB搭建简易图片服务器
- Windows下Python + Flask环境搭建
- 利用python-flask搭建个人博客
- debian下python flask环境搭建
- Python:Flask环境搭建
- Python Flask环境搭建
- python(flask) + mod_wsgi + apache windows下环境搭建