flask再学习-重构!启动!
1.打造MVC框架:
common/libs:放置一些功能公用的方法。
common/models:放置ORM模型
config:配置文件属性
web/controllers:视图层,处理url和api
web/interceptors:拦截器,用于页面请求,api请求,错误的拦截
web/static:静态资源的存放
web/templates:页面模板的存放
application.py:重构Flask核心对象
manager.py:管理器
www.py:url和api蓝图路由管理器
2.重构我们的Flask:
class Application(Flask): # 重载flask对象,配置分步加载
def __init__(self, import_name, template_folder=None, root_path=None): # 重载初始化方法,重置template位置
super(Application, self).__init__(import_name, template_folder=template_folder, root_path=root_path,
static_folder=None) # 重构,改变template,static等默认值
self.config.from_pyfile('config/base_setting.py') # 加载配置
# export ops_config=local(设置环境变量加载不同的配置文件)
if "ops_config" in os.environ: # 加载配置文件
self.config.from_pyfile('config/%s_setting.py' % os.environ['ops_config']) db.init_app(self) # 注册到app
db = SQLAlchemy() # 初始化orm对象
app = Application(__name__, template_folder=os.getcwd()+"/web/templates/", root_path=os.getcwd())
manager = Manager(app) # 将App进行包装
在flask源码中,构造方法需要以下参数:
def __init__(
self,
import_name,
static_url_path=None,
static_folder='static',
static_host=None,
host_matching=False,
subdomain_matching=False,
template_folder='templates',
instance_path=None,
instance_relative_config=False,
root_path=None
):
import_name:对象名
static_url_path=None:静态url地址
static_folder:静态文件目录
static_hos:静态主机
template_folder='templates':模板地址
root_path:根目录 我们重载了对象名,模板地址,root_path,静态文件目录 3.在manager.py中启动项目:
from application import app, manager
from flask_script import Server
# web server,自定义命令,runserver自定义server命令,里面是参数,可以取代app.run()
manager.add_command("runserver",
Server(host='0.0.0.0', port=app.config['SERVER_PORT'], use_debugger=True, use_reloader=True)) def main():
manager.run() # 使用自定义启动方法,启动为manager.py runserver if __name__ == '__main__':
try:
import sys
sys.exit(main())
except Exception as e:
import traceback # 打印所有错误信息 traceback.print_exc()
这里使用了flask_script申明扩展flask能力,Server自定义命令,指定地址,端口,调试模式等,我们就可以用runserver启动
关于加载本地配置还是线上配置,使用export指定脚本变量就可以选择了。默认加载本地的 ok!flask跑起来了!
flask再学习-重构!启动!的更多相关文章
- flask再学习-思考之怎么从数据库中查询数据在页面展示!
看别人视频觉得很简单,要自己做蒙蔽了!这样子.NO! 1. 流程: 首先要有和数据库连接的驱动!一般有PYMySQL mysqlclient 等 使用扩展Flask-SQLAlchemy 获得orm对 ...
- Android再学习-20141022-Activity的生命周期
20141022-Android再学习 如何在一个应用程序当中定义多个Activity 定义一个类,继承Activity 在该类当中,复写Activity当中的onCreate方法.onCreate( ...
- 再学习sqlhelper
在机房收费重构系统的时候,第一次学习sqlhelper.当时感觉比较简单,没有写博客总结,现在又经过了图书馆的学习,感觉还是有必要写一写的. SqlHelper是一个基于.NETFramework的数 ...
- FFmpeg再学习 -- SDL 环境搭建和视频显示
继续看雷霄骅的 课程资料 - 基于FFmpeg+SDL的视频播放器的制作 一.SDL 简介 参看:WIKI -- Simple DirectMedia Layer 参看:最简单的视音频播放示例9:SD ...
- FFmpeg再学习 -- 硬件加速编解码
为了搞硬件加速编解码,用了一周时间来看 CUDA,接下来开始加以总结. 一.什么是 CUDA (1)首先需要了解一下,什么是 CUDA. 参看:百度百科 -- CUDA 参看:CUDA基础介绍 参看: ...
- activiti学习6:启动流程后动态获取流程图
目录 activiti学习6:启动流程后动态获取流程图 一.绘图原理 二.根据流程定义id绘图 三.根据流程实例id绘图 3.1 基本原理 3.2 当前节点的获取 3.3 走过的节点的获取 3.4 绘 ...
- Selenium2学习-042-Selenium3启动Firefox Version 48.x浏览器(ff 原生 geckodriver 诞生)
今天又被坑了一把,不知谁把 Slave 机的火狐浏览器版本升级为了 48 的版本,导致网页自动化测试脚本无法启动火狐的浏览器,相关的网页自动化脚本全线飘红(可惜不是股票,哈哈哈...),报版本不兼容的 ...
- js再学习笔记
#js再学习笔记 ##基本 1.js严格区分大小写 2.js末尾的分号可加,也可不加 3.六种数据类型(使用typeof来检验数据的类型) `typeof` - undefined: `var ...
- express再学习
对比spring,django,再学习express就有很多共通的地方啦... 看的书是一本小书,<express in action>,排版比较好. 昨天开始看,看了快四分之一啦... ...
随机推荐
- Jmeter—开篇
Jmeter以开源.轻便著称,做接口测试.性能测试都可以借助Jmeter,从这篇开始记录我使用到的Jmeter功能. 安装 Jmeter官网:http://jmeter.apache.org/ 去官网 ...
- Linux常用系统信息查看命令
[转]http://yulans.cn/linux/linux%E5%B8%B8%E7%94%A8%E7%B3%BB%E7%BB%9F%E4%BF%A1%E6%81%AF%E6%9F%A5%E7%9C ...
- javascript删除Cookie的正确方法(转载)
原来一直以为只要设置javascript的document.cookie对象就能简单的在浏览器端设置和删除cookie值,网上很多文章也是这么教的,但是最近发现简单的设置javascript的docu ...
- Struts2将图片输出到页面
在做CRUD的过程中,添加页面是个表单,表单里面有一项是上传头像文件.这样表单提交后,头像文件上传了. 但这个文件存的地址是本地硬盘的一个文件夹.在编辑页面要做这个头像的回显的话,就需 ...
- WPF编程,获取句柄将外部程序嵌入到WPF界面。
原文:WPF编程,获取句柄将外部程序嵌入到WPF界面. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/details ...
- STM32一键下载电路设计原理
先放原理图(补充:图中的BOOT0通过10K的电阻接到地),再解释为什么这么设计: STM32启动方式:BOOT0和 BOOT1用于设置 STM32的启动方式 ,见下表: BOOT0=1,BOOT1= ...
- C# Language Specification 5.0 (翻译)第二章 词法结构
程序 C# 程序(program)由至少一个源文件(source files)组成,其正式称谓为编译单元(compilation units)[1].每个源文件都是有序的 Unicode 字符序列.源 ...
- HTML快速入门(一)
一.HTML 是什么? HTML 指的是超文本标记语言 (Hyper Text Markup Language) HTML 不是一种编程语言,而是一种标记语言 (markup language) 标记 ...
- 在 OSX 下使用 supervisor 管理服务
我为什么想用 supervisor 来管理服务呢?因为我在系统管理上属于处女座+任性的气质. OSX 下办公用的是普通用户,我不想在 root 权限下做过多设置污染我的系统. OSX 下的服务管理我感 ...
- c++日志记录模块
C++ 日志记录模块 该模块从实际项目中产生,通过extern声明的方式,可在代码不同模块中生成日志,日志文件名称为随机码加用户指定名称,采用随机码是为了避免日志文件可能被覆盖的问题. 愿意的话你也能 ...