如何创建一个Flask项目并进行简单配置


Posted in Python onNovember 18, 2020

安装的依赖包

flask
pymysql
flask_script
flask_migrate
flask_sqlalchemy

创建Flask项目(项目目录结构)

flaskexample
 |---static
 |---templates
 |---app.py

在项目下创建settings文件,进行配置

setting.py
 
 class DevelopmentConfig:
  DEBUG = True
  SQLALCHEMY_DATABASE_URI=mysql+pymysql://用户:密码@host/数据库
  SQLALCHEMY_TRACK_MODIFICATIONS=False
  SQLALCHEMY_ECHO=True
  ENV='development'
  
# 此时项目目录结构 
flaskexample
 |---static
 |---templates
 |---app.py
 |---setting.py

在项目下创建apps文件,在__init__.py文件下进行配置

apps.__init__.py
 
 from flask import Flask
 
 import setting
 from exts import db
 
 
 def create_app():
  app = Flask(__name__, template_folser='../templates', static_folder='../static')
  
  app.config.from_object(setting.DevelopmentConfig)
  
  # 初始化ORM
  db.init_app(app=app)
  
  return app

# 此时项目目录结构 
flaskexample
 |---apps
  |---__init__.py
 |---static
 |---templates
 |---app.py
 |---setting.py

在项目文件夹下的app.py中进行配置

app.py
 from flask import Flask
 from flask_script import Manager
 from flask_migrate import Migrate, MigrateCommand

 from apps import create_app
 from exts import db
 from apps.user import user
 
 app = create_app()
 
 # 配置manage
 manager = Manager(app=app)
 
 # 配置migrate命令,将相关命令交给manage
 migrate = Migrate(app=app, db=db)
 manager.add_command('db', MigrateCommand)
 
 # 注册蓝图
 app.register_blueprint(user)
 
 
 if __name__ == '__main__':
  manager.run()

创建exts文件,进行ORM配置

exts.__init__.py
 
 from flask_sqlalchemy import SQLAlchemy
 
 # 配置ORM
 db = SQLAlchemy()
 
# 此时项目目录结构 
flaskexample
 |---apps
  |---__init__.py
 |---exts
  |---__init__.py
 |---static
 |---templates
 |---app.py
 |---setting.py

在apps._init_.py中初始化ORM配置(已在文件中进行配置)
在app.py中注册migrate命令相关配置(已在文件中进行配置)
在apps下创建app文件并创建相关文件(如用户app)

# 此时项目目录结构 
flaskexample
 |---apps
  |---__init__.py
  |---user
   |---__init__.py
   |---view.py
   |---models.py
 |---exts
  |---__init__.py
 |---static
 |---templates
 |---app.py
 |---setting.py

在apps.user.models.py中编写数据表的相关信息

user.model
 from exts import db
 
 class User(db.Model):
  username = db.Column(db.String(60), nullable=True)
  password = db.Column(db.String(60), nullable=True)
  ···

进行数据迁移

# 1. 初始化表
 python app.py db init
 # 2. 生成迁移文件
 Python app.py db migrate
 # 3. 进行数据迁移
 python app.py db upgrate

#当命令2执行成功后自动生成migrations文件夹
# 此时项目目录结构 
flaskexample
 |---apps
  |---user
   |---__init__.py
   |---models.py
   |---view.py
  |---__init__.py
 |---exts
  |---__init__.py
 |---migrations
  |---versions
   |---9eef46471b52_.py
  |---alembic.ini
  |---env.py
  |---READEME
  |---script.py.mako
 |---static
 |---templates
 |---app.py
 |---setting.py

在user _init_下创建蓝图,并在apps的_init_下注册

user.__init__

 from flask import Blueprint
 user = Blueprint("user", __name__)

之后就可以在user下的view.py中进行逻辑的处理了

以上就是如何创建一个Flask项目并进行简单配置的详细内容,更多关于创建 flask项目的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
使用优化器来提升Python程序的执行效率的教程
Apr 02 Python
利用python实现简单的邮件发送客户端示例
Dec 23 Python
python实现画圆功能
Jan 25 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
May 26 Python
python实现机器学习之元线性回归
Sep 06 Python
浅谈python3发送post请求参数为空的情况
Dec 28 Python
Python-接口开发入门解析
Aug 01 Python
基于python的BP神经网络及异或实现过程解析
Sep 30 Python
pytorch模型存储的2种实现方法
Feb 14 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
Apr 14 Python
python3中sys.argv的实例用法
Apr 24 Python
python如何读取.mtx文件
Apr 22 Python
使用PyCharm官方中文语言包汉化PyCharm
Nov 18 #Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
Nov 18 #Python
PyCharm最新激活码PyCharm2020.2.3有效
Nov 18 #Python
python实现图片,视频人脸识别(dlib版)
Nov 18 #Python
python实现图片,视频人脸识别(opencv版)
Nov 18 #Python
最新pycharm安装教程
Nov 18 #Python
如何利用Python写个坦克大战
Nov 18 #Python
You might like
php采集速度探究总结(原创)
2008/04/18 PHP
discuz程序的PHP加密函数原理分析
2011/08/05 PHP
PHP flush 函数使用注意事项
2016/08/26 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
2017/06/21 PHP
老鱼 浅谈javascript面向对象编程
2010/03/04 Javascript
Jquery中dialog属性小记
2010/09/03 Javascript
JSONP 跨域访问代理API-yahooapis实现代码
2012/12/02 Javascript
js实现倒计时(距离结束还有)示例代码
2013/07/24 Javascript
json实现前后台的相互传值详解
2015/01/05 Javascript
vuejs指令详解
2017/02/07 Javascript
微信小程序实战之上拉(分页加载)效果(2)
2017/04/17 Javascript
JS实现图片点击后出现模态框效果
2017/05/03 Javascript
Vue组件通信之Bus的具体使用
2017/12/28 Javascript
基于webpack-hot-middleware热加载相关错误的解决方法
2018/02/22 Javascript
深入理解 Koa 框架中间件原理
2018/10/18 Javascript
浅谈KOA2 Restful方式路由初探
2019/03/14 Javascript
vue无限轮播插件代码实例
2019/05/10 Javascript
手写Vue弹窗Modal的实现代码
2019/09/11 Javascript
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
Python深入学习之内存管理
2014/08/31 Python
pycharm创建scrapy项目教程及遇到的坑解析
2019/08/15 Python
爬虫代理的cookie如何生成运行
2020/09/22 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
2020/11/13 Python
python压包的概念及实例详解
2021/02/17 Python
CSS3网格的三个新特性详解
2014/04/04 HTML / CSS
css3实现可滑动跳转的分页插件示例
2014/05/08 HTML / CSS
巴黎一票通:The Paris Pass
2018/02/10 全球购物
大学生大二自我鉴定
2013/10/28 职场文书
幼儿园保育员辞职信
2014/01/12 职场文书
服务之星事迹材料
2014/05/03 职场文书
社区党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
2014年酒店前台工作总结
2014/11/14 职场文书
2014年英语教学工作总结
2014/12/17 职场文书
优秀党支部申报材料
2014/12/24 职场文书
辞职信范文大全
2015/03/02 职场文书
Python中的tkinter库简单案例详解
2022/01/22 Python