本文共 3271 字,大约阅读时间需要 10 分钟。
使用 flask-script 拓展将
app.py 文件修改成manager.py修改项目结构:
要解决的问题是: views需要导入app对象,但是app对象又需要调用到views。
故可以将app对象,放到app模块中去实例化:
最后将路由注册方法单独的 views文件的函数中。函数需要一个参数app然后在app模块的init文件中,新建一个app对象的时候,将对象带进去这个函数,那么路由就会绑定到这个app对象上面
最后manager文件将这个app对象启动。
也就是app这个对象,是在views.py文件或者说views模块中的 creat_app()函数中 进行实例化,之后也可以采取放到 app模块的init.py文件中去#views.py:def init_route(app): @app.route('/') def hello_world(): return 'Hello World!'#init:from flask import Flaskfrom App.views import init_routedef create_app(): app = Flask(__name__) init_route(app) return app# manager.pyfrom App import create_appapp = create_app()manager = Manager(app=app)
路由的一种规划,一种设计
flask-blueprint
bludeprint 使用出现问题。只要在文件里面输出参数 __name__就报错
注意:名字定位错误。。。
结果: pycharm自动导包错误。 应该是:from flask import Blueprint使用指南: 三种方法,推荐最后一种
在views文件中定义一个 Blueprint对象,然后在app生成后注册到app里面。在新的blueprint对象下面写路由。
将views作为模块,在init.py文件中去引用其他文件,将其他文件生成的实例全部到init.py中引用:
from .first_blue import blue 依然还是在 app生成之后注册。也就是在APP的init.py文件中注册路由在views 模块中新建init_views()函数,然后注入app对象,在views模块的init.py文件中进行路由的注册。
使用 return render_template(‘index.html’)方法返回模版对象;
传参数到模版里面:render_template(‘index.html’,msg=‘这是信息’)//key-value传值。
数据库+驱动://用户名:密码@主机:端口/具体哪一个库
Python就内置了SQLite3,所以,在Python中使用SQLite,不需要安装任何东西,直接使用。
连接语句:
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///sqlite.db'
注意事项 第一次在pycharm中使用,要记得安装驱动;
进行测试连接:定义模型类:继承db.Model
SQLAlchemy的对象 db操作数据库的语法:
# 创建:db.crete_all()# 删除:db.drop_all()#添加db.session.add()db.session.commit()
mysql+mysqlconnector://hhh:Sqlroot123!@xx.xx.xx.xx:3306/hello
pycharm支持自己连接数据库(输入参数即可),可以少可开navicate去查看数据库了。
注意事项
pycharm连接mysql之后,记得选择schema文件。把自己的那个数据库包括进去。不然看不到。
感悟:python只能一个主文件,慢慢去调用其他文件。
在此拆分之后:
之后就可以通过在route里面写业务逻辑然后去调用db对象进行数据库操作。可以在模型里面 添加sava方法:具体使用过程:
def save(self): db.session.add(self) db.session.commit()
适应公司开发,多套环境:
将config 拿到setting.py文件中去:
然后给app添加config的时候,使用
app.config.from_object(envs.get('develop)')
env 里面的develop变量可以从manager.py 传入
将指定环境放到manage.py//另外可以通过os.environ.get(‘FLASK_ENV’,‘develop’).实现通过电脑自动获取 环境变量来指定环境
(其实也只是有点点用。。。)
不能动态更新表;
懒加载方式,需要db,app对象来进行初始化
migrate = Migrate()def init_ext(app): db.init_app(app=app)# 初始化管理者,需要app migrate.init_app(app,db)
# 初始化python manager.py db init# 检查表加表python manager.py db migrate # 更新到数据库python manager.py db upgrade
到此为止 对应java ssh
前端的 route 对应 写接口,应该掉servece
model 也已经定义好了
servece 调用mapper (直接orm完成了)还没搞好。
项目结构:
转载地址:http://tcywi.baihongyu.com/