怎么建设分销模式手机网站,石家庄网站推广公司,权威的电商网站建设,免费网站空间 评测随着功能的添加#xff0c;路由越来越多#xff0c;view层的拆分变成了刚需 蓝图的杀手锏是将你的应用组织成不同的组件#xff0c;比如把这里的admin#xff0c;main#xff0c;course等相关的视图方法分为组件。这时我们可以 创建三个蓝图实现这两个独立的组件。static文…随着功能的添加路由越来越多view层的拆分变成了刚需 蓝图的杀手锏是将你的应用组织成不同的组件比如把这里的adminmaincourse等相关的视图方法分为组件。这时我们可以 创建三个蓝图实现这两个独立的组件。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 flaskyexample.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:123456localhost/flasktestdb RECAPTCHA_PUBLIC_KEY 6LeYIbsSAAAAACRPIllxA7wvXjIE411PfdB2gt2J RECAPTCHA_PRIVATE_KEY 6LeYIbsSAAAAAJezaIq3Ft_hSTo0YtyeFG-JgRtu # 测试环境的配置 class TestingConfig(Config): TESTING True SQLALCHEMY_DATABASE_URI mysql://root:123456localhost/flasktestdb RECAPTCHA_PUBLIC_KEY 6LeYIbsSAAAAACRPIllxA7wvXjIE411PfdB2gt2J RECAPTCHA_PRIVATE_KEY 6LeYIbsSAAAAAJezaIq3Ft_hSTo0YtyeFG-JgRtu # 生产环境的配置 class ProductionConfig(Config): SQLALCHEMY_DATABASE_URI mysql://root:123456localhost/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(threadedTrue)) 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 版权声明本文为博主原创文章转载请附上博文链接