搭建一个flask项目框架
一个完整的flask项目框架一、项目布局:MVT开发模式M–model(模型)1.主要对于数据库层的封装,实现 数据模型与数据库的解耦 ,使得数据模型不在依赖特定的数据库,而只需要更改config就可以实现数据库的迁移。2.设计思路:对象-关系-映射(Object–relation-Mapping3.常采用sqlalchemy使数据查询更加简单。V–views(视图)作用:视...
搭建一个flask项目框架
一、项目布局:MVT开发模式
-
M–model(模型)
1.主要对于数据库层的封装,实现 数据模型与数据库的解耦 ,使得数据模型不在依赖特定的数据库,而只需要更改config就可以实现数据库的迁移。
2.设计思路:对象-关系-映射(Object–relation-Mapping
3.常采用sqlalchemy使数据查询更加简单。
-
V–views(视图)
作用:视图接受Web请求并且返回Web响应。
-
T–template(模板)
- web,包括动态模板(通过views的数据结合进行数据展示)和静态html,
- 模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用
- template注重的是向用户的展示,而不是业务逻辑。
二、文件布局
1203:项目名
app:放在工程代码
models模型层,负责连接数据库,完成数据操作
static静态文件夹,客户端能访问的,如网页的js,css,images。
templates放置html模板,属于模板层。
views视图层,负责处理用户的请求,做出反应,完成业务,重视业务逻辑。
config.py配置文件,配置一个项目所需的各项参数。
extensions.py外部的python库的配置与初始化。
manage.py 将项目封装成服务。
三、码代码
1.第一步创建以上的相关文件及文件夹,搭好项目的基本文件目录
之后的第一步配置app/config.py
class Config:
SQLALCHEMY_COMMIT_ON_TEARDOWN = True
SQLALCHEMY_TRACK_MODIFICATIONS = False
@staticmethod
def init_app(app):
pass
# 开发环境 语法:mysql+pymysql://用户名:密码@ip:端口/数据库名
class DevelopmentConfig(Config):
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:123456@localhost:3306/bigdata'
# 测试环境
class TestingConfig(Config):
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:123456@localhost:3306/bigdata'
# 生产环境
class ProductionConfig(Config):
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:123456@localhost:3306/bigdata'
# 配置字典
config = {
'development': DevelopmentConfig,
'testing': TestingConfig,
'production': ProductionConfig,
'default': DevelopmentConfig
}
2.配置app/extensions.py
- flask_moment: Flask-Moment是一个集成
moment.js
到Jinja2模板的Flask扩展 (moment.js: 提供了日期格式化、日期解析等功能 ) - flask_sqlalchemy: 是一个很强大的关系型数据库框架,支持多种数据库后台 ,为models模型层提供友好的支持。
- flask_bootstrap: 一个优秀的前端框架很好的集成于python中。
- flask_migrate: 一个用来做数据迁移的falsk扩展,一般结合sqlalchemy一起使用。
代码如下
from flask_moment import Moment
from flask_sqlalchemy import SQLAlchemy
from flask_bootstrap import Bootstrap
from flask_migrate import Migrate
#创建对象
moment = Moment()
db = SQLAlchemy()
bootstrp = Bootstrap()
migrate = Migrate()
#创造一个初始化的方法
def config_extension(app):
moment.init_app(app)
db.init_app(app)
bootstrp.init_app(app)
migrate.init_app(app)
3.配置app/views完成蓝图设置
新建文件app/views/main.py
#app/views/main.py
from flask import Blueprint
main = Blueprint('main',__name__)
@main.route('/')
def index():
return '配置完成!'
新建文件app/views_init_.py完成蓝图的注册
#app/views/__init__.py
from .main import main
from flask import Flask
BLUEPRINT = (
(main,''),
)
#创建一个初始化的蓝图的方法
def config_blieprint(app):
for blueprint,prefix in BLUEPRINT:
app.register_blueprint(blueprint,url_prefix = prefix)
4. 完成app/_init_.py项目初始化及404
比较重要的是初始化的顺序:config的初始化必须要在在第一步!!!
from flask import Flask, render_template
from app.views import config_blieprint
from app.config import config
from app.extensions import config_extension
#创建一个初始化Flask项目的方法
def strat_app(config_name):
app = Flask(config_name)
app.config.from_object(config[config_name] or config['default'])
config[config_name].init_app(app)
config_extension(app)
config_blieprint(app)
config_errorhandler(app)
return app
#定制404页面
def config_errorhandler(app):
@app.errorhandler(404)
def page_not_found(e):
return render_template('errors/404.html')
5.manage.py 封装项目
import os
from flask_script import Server,Manager
from flask_migrate import MigrateCommand
from app import strat_app
config_name = os.environ.get('FLASK_CONFIG') or 'default'
app = strat_app(config_name)
manage = Manager(app)
manage.add_command("runserver", Server(use_debugger=True))
manage.add_command('db',MigrateCommand)
if __name__ == '__main__':
manage.run()
最后:我们可以通过命令行去运行我们的项目
python manage.py runserver
打开浏览器访问:http://127.0.0.1:5000/
OK,我们就写好了一个flask的通用项目模板,如果需要添加什么需求就可以直接添加就可以了!
更多推荐
所有评论(0)