在单蓝图多视图文件模板的基础上将配置文件拆分为两个
将项目根目录下的config.py移动到app目录下,并拆分成setting.py和secure.py两个配置文件
settings.py用来保存一些非机密的配置,比如程序中的参数、静态文件路径等生产环境和开发环境相同的配置信息,这个文件可以上传git
secure.py用来保存一些机密配置,比如数据库连接配置、是否开启DEBUG,这个文件用来保存开发环境和生产环境不同的配置,这个文件不能上传git
文件目录结构如下
.
├── app
│ ├── __init__.py
│ ├── secure.py
│ ├── setting.py
│ ├── static
│ │ └── favicon.ico
│ ├── templates
│ │ └── login.html
│ └── web
│ ├── account.py
│ ├── blueprint.py
│ ├── __init__.py
│ ├── server.py
│ └── user.py
├── Pipfile
├── Pipfile.lock
├── readme.txt
└── run.py
编辑app/__init__.py内容如下,修改读取配置文件的地方。
# -*- coding:utf-8 -*- # 初始化flask核心对象 from flask import Flask # 定义一个函数用来创建app核心对象 def create_app(): app = Flask(__name__) # app.config.from_object('config') app.config.from_object('app.secure') app.config.from_object('app.setting') # 调用注册蓝图 register_blueprint(app) return app # 创建注册蓝图的方法 def register_blueprint(app): # 导入蓝图对象 from app.web.blueprint import web app.register_blueprint(web)
编辑app/web/user.py 视图函数,添加一个测试视图函数读取公共配置文件信息
# -*- coding:utf-8 -*- # 视图函数定义文件,定义和用户相关的视图函数 from .blueprint import web # from flask import session, redirect # 读取配置文件需要使用current_app from flask import current_app # @web.route('/user/') # def user(): # pass # 让url前缀为 user的请求都要求登录 # @web.before_request # def press_request(*args, **kwargs): # user = session.get('user_info') # if user: # return None # return redirect('/login/') @web.route('/user/', methods=['GET', 'POST']) def user(): return 'user' @web.route('/config/') def config(): return current_app.config['PIC_DIR']
创建一个图片目录 app/static/pic
在公共配置文件app/setting.py中添加如下
# -*- coding:utf-8 -*- # 定义项目公共配置文件,生成环境可开发环境相同,可以上传git # 图片目录 PIC_DIR = "static/pic/"
在项目根目录下创建git忽略配置文件.gitignore,内容如下
.idea *.iml *.swp .idea/* *.pyc __pycache__ app/__pycache__ app/web/__pycache__ Pipfile.lock app/secure.py