Flask新闻资讯项目
1.项目介绍
- 项目分析
- 框架搭建
- 蓝图目录
- 日志
前后端不分离,局部刷新ajax请求接口,主要业务逻辑目录结构仿照Django
1.1项目分析
掌握:web应用程序开发流程,常见功能实现,Git使用,源码阅读能力
技术栈:Flask Redis+mysql 七牛云 云通信
Gunicorn+Nginx服务器
功能模块:新闻 后台 用户
具体需求:
1.2 Pycharm VCS
.gitignore是git add 忽略文件 写上.idea/ *py[cod] 等等
itcastyinqiaoyin
2.项目配置 数据库配置
2.1 基本配置
创建Config类
数据库Sqlalchemy配置
Redis配置
单独使用表单验证 CSRF CSRFProtect 传入app
2.2 Session保存到redis里
from flask_session import Session
flask-session是flask框架的session组件,由于原来flask内置session使用签名cookie保存,该组件则将支持session保存到多个地方
Session(app) session读取app配置
SESSION_TYPE=‘redis’ session保存在redis
SESSION_USE_SINGER session签名
SESSION_PERMANENT = True默认不过期
过期时间:PERMANENT_SESSION_LIFETIMEs
SESSION_REDIS= StrictRedis(host= ,port=)
app.config[‘SESSION_KEY_PREFIX’] = ‘session:’ # 保存到session中的值的前缀
Redis重复利用率
2.3数据库迁徙配置以及flask-script管理app
from flask_script import Manager
from flask_migrate import Migrate,MigrateCommand
Migrate(app,db)关联数据库app 迁移
3. 抽取项目配置到单独文件
让manage只做程序入口,不关心配置,配置导入,不关心视图函数(蓝图),不关心app创建的相关代码
3.1抽取配置文件
3.2抽取业务逻辑文件
3.3不同环境 配置
部署开发类继承于Config,开发环境下配置
部署生产环境类继承于Config,配置可以不同
测试环境等等多应用环境配置
为了方便可以设置一个配置字典,value是各个环境的类,这样只需要导入字典,再输入相应key就可以取得相应配置
3.4 通过指定配置名字创建对应app
在业务逻辑文件里,定义一个创建app的函数,通过传入的变量,应用不同的环境配置,返沪创建的app
先初始化db = SQLAlchemy()
然后再db.init_app()
在Flask中很多扩展里面都可以先初始化对象,然后再去调用init_app来初始化
3.5 日志简介
日志:追踪软件运行过程,记录运行状态,错误信息,事件也有重要性级别level(开发级别,线上级别)