linux怎么查看本机内存大小
365
2022-08-28
Python flask实战订餐系统微信小程序-14手写MVC框架
一、代码结构
一个好的框架是易扩展的。
├─.idea├─common 公用代码│ ├─libs 公用代码或类│ └─models 所有数据库的Model├─config 配置文件├─docs 文档存放├─jobs 定时任务│ └─tasks └─web HTTP相关 └─controllers 所有的控制层都放在这里
二、实战简单MVC框架
2.1项目框架的搭建
先删除之前的代码,创建common这个python文件夹 以及它的2个子文件夹libs和models。
其次,创建config文件夹,在虾米那创建base_etting.py和local_setting.py以及production_setting.py
添加docs目录,并添加mysql.md文件用于说明数据库的使用
创建jobs文件夹,在那创建tasks文件夹
再创建web目录:
创建application.py等外部文件夹:
以上就完成了项目最基本的代码框架的搭建。
2.2 app封装
2.2.1简单封装
首先再application里面进行app封装:
# -*- coding: utf-8 -*-from flask import Flaskfrom flask_sqlalchemy import SQLAlchemyclass Application( Flask ): def __init__(self,import_name): super( Application,self ).__init__( import_name ) self.config.from_pyfile( 'config/base_setting.py' ) db.init_app( self )db = SQLAlchemy()app = Application( __name__ )
manager.py添加:
# -*- coding: utf-8 -*-from application import appdef main(): app.run(host='0.0.0.0', debug=True) # manager.run( )if __name__ == '__main__': try: import sys sys.exit( main() ) except Exception as e: import traceback traceback.print_exc( )
2.2.2添加配置
base_setting.py添加配置文件,去除代码警告
SQLALCHEMY_DATABASE_URI = 'mysql://root:123456@127.0.0.1/mysql?charset=utf8mb4'SQLALCHEMY_TRACK_MODIFICATIONS = False
2.2.3安装flask-script扩展
为管理manager入口,我们需要引入flask_script库,它为flask框架提供了扩展的能力
install Flask-Script
2.2.4调用flask-script自定义启动参数
因为flask-script有一些特性可供我们扩展、它可以自定义命令。
application.py
# -*- coding: utf-8 -*-from flask import Flaskfrom flask_script import Managerfrom flask_sqlalchemy import SQLAlchemyclass Application( Flask ): def __init__(self,import_name): super( Application,self ).__init__( import_name ) self.config.from_pyfile( 'config/base_setting.py' ) db.init_app( self )db = SQLAlchemy()app = Application( __name__ )# app包装manager = Manager( app )
manager.py
# -*- coding: utf-8 -*-from application import app,managerfrom flask_script import Server##web servermanager.add_command( "runserver", Server( host='0.0.0.0',port=5000,use_debugger = True ,use_reloader = True) )def main(): manager.run( ) # app.run(host='0.0.0.0', debug=True)if __name__ == '__main__': try: import sys sys.exit( main() ) except Exception as e: import traceback traceback.print_exc( )
运行:
2.2.5端口配置化
base_setting.py添加配置文件
SQLALCHEMY_DATABASE_URI = 'mysql://root:123456@127.0.0.1/mysql?charset=utf8mb4'SQLALCHEMY_TRACK_MODIFICATIONS = FalseSERVER_PORT = 8999
manager.pu
# -*- coding: utf-8 -*-from application import app,managerfrom flask_script import Server##web servermanager.add_command( "runserver", Server( host='0.0.0.0',port=app.config['SERVER_PORT'],use_debugger = True ,use_reloader = True) )
这样 既可以通过8999这个端口访问了:
2.2.6加载不同环境的配置实现
application.py添加如下语句
# -*- coding: utf-8 -*-from flask import Flaskfrom flask_script import Managerfrom flask_sqlalchemy import SQLAlchemyimport osclass Application( Flask ): def __init__(self,import_name): super( Application,self ).__init__( import_name ) self.config.from_pyfile( 'config/base_setting.py' ) if "ops_config" in os.environ: self.config.from_pyfile( 'config/%s_setting.py'%os.environ['ops_config'] )
将SERVER_PORT = 9000这个设置从base_setting.py拷贝到local_setting.py
修改环境变量:
windwos下修改
Linux下修改:
export ops_config=local
再次运行:
2.2.7配置统一规划
base_setting.py
# -*- coding: utf-8 -*-SERVER_PORT = 8999DEBUG = FalseSQLALCHEMY_ECHO = False
local_setting.py
# -*- coding: utf-8 -*-SQLALCHEMY_DATABASE_URI = 'mysql://root:123456@127.0.0.1/mysql?charset=utf8mb4'SQLALCHEMY_TRACK_MODIFICATIONS = FalseDEBUG = TrueSQLALCHEMY_ECHO = TrueSQLALCHEMY_ENCODING = "utf8mb4"
2.2.8入口页面的添加
web创建controllers层,然后创建index.py文件
# -*- coding: utf-8 -*-from flask import Blueprintroute_index = Blueprint( 'index_page',__name__ )@route_index.route("/")def index(): return "Hello World"
py添加Blueprnit
# -*- coding: utf-8 -*-from application import appfrom web.controllers.index import route_indexapp.register_blueprint( route_index,url_prefix = "/" )
入喉文件引入
访问
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~