Flask项目结构

2016/05/25 Flask 阅读次数:

项目结构

创建项目根目录:

在根目录创建:config.py,manage.py,test.py和app应用文件夹

在app应用文件创建静态文件夹和模板文件夹、email.py、modls.py、web.py

在app文件中init文件中,管理app应用的一些配置,注册蓝图,创建数据库对象等

在app文件中main接口文件中init文件中定义创建蓝图

在app文件中models.py文件定义数据库表

在app文件中email.py文件中定义发送邮件

在config.py文件中配置项目相关配置mysql,redis等

在test文件中写测试

蓝图创建时,在main接口文件夹中init创建蓝图,在main中子模块导入使用

蓝图注册时,在创建app文件的文件中进行注册

配置config.py文件

有manage.py文件完全控制程序的启动,

问题:无能的表现,循环导入问题,如下图

pic解决方案:

双方任意一方,延迟导入,或者在使用时再导入

开启csfr保护机制

问题1:KeyError: ‘A secret key is required to use CSRF.’ // Werkzeug Debugger

解决:SECRET_KEY = ‘y8P8rzqR0HOgWq+beq6g+KfGYw+xTLyRqr0QZCQEOXM=’

问题2:The CSRF token is missing

解决:需要看是表单提交的还是ajax提交的都不一样,表单需要在表单中添加csrf,而ajax需要在请求头中添加

配置redis,session

# 创建Session, 将session数据从以前默认的cookie, 存放到redis中
- redis数据相关配置在config.py
- session在应用中的init文件中

日志配置,在config.py文件中

# 设置日志的记录等级
logging.basicConfig(level=logging.DEBUG) # 调试debug级
# 创建日志记录器,指明日志保存的路径、每个日志文件的最大大小、保存的日志文件个数上限
file_log_handler = RotatingFileHandler("logs/log", maxBytes=1024*1024*100, backupCount=10)
# 创建日志记录的格式 日志等级 输入日志信息的文件名 行数 日志信息
formatter = logging.Formatter('%(levelname)s %(filename)s:%(lineno)d %(message)s')
# 为刚创建的日志记录器设置日志记录格式
file_log_handler.setFormatter(formatter)
# 为全局的日志工具对象(flask app使用的)添加日志记录器
logging.getLogger().addHandler(file_log_handler)

静态文件的访问,需要重新创建蓝图

  • 需要在tools文件夹中创建commnos.py文件,重写正则

  • web_static_html,进行静态文件访问接口

  • 需要创建一个新的蓝图

命令启动指定ip和端口

python manage.py runserver -h0.0.0.0 -p5000

Search

    Table of Contents