如何创建一个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通过ElementTree操作XML获取结点读取属性美化XML
Dec 02 Python
python使用cookie库操保存cookie详解
Mar 03 Python
python实现线程池的方法
Jun 30 Python
详解python3中socket套接字的编码问题解决
Jul 01 Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
Oct 11 Python
python机器学习实战之最近邻kNN分类器
Dec 20 Python
python编写微信远程控制电脑的程序
Jan 05 Python
Django分页查询并返回jsons数据(中文乱码解决方法)
Aug 02 Python
Python assert语句的简单使用示例
Jul 28 Python
Python字典中的值为列表或字典的构造实例
Dec 16 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
Jun 05 Python
Python drop方法删除列之inplace参数实例
Jun 27 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
杏林同学录(三)
2006/10/09 PHP
第九节--绑定
2006/11/16 PHP
PHP学习笔记 (1) 环境配置与代码调试
2011/06/19 PHP
php实现用户在线时间统计详解
2011/10/08 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
2013/01/11 PHP
功能强大的PHP发邮件类
2016/08/29 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
PHP实现的文件操作类及文件下载功能示例
2016/12/24 PHP
ext form 表单提交数据的方法小结
2008/08/08 Javascript
两种简单实现菜单高亮显示的JS类代码
2010/06/27 Javascript
javascript 10进制和62进制的相互转换
2014/07/31 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
2020/06/23 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
Vue实现购物车功能
2017/04/27 Javascript
vue filters的使用详解
2018/06/11 Javascript
小程序:授权、登录、session_key、unionId的详解
2019/05/15 Javascript
JavaScript setInterval()与setTimeout()计时器
2019/12/27 Javascript
[08:38]DOTA2-DPC中国联赛 正赛 VG vs Elephant 选手采访
2021/03/11 DOTA
python 将字符串转换成字典dict
2013/03/24 Python
python中的闭包用法实例详解
2015/05/05 Python
Python实现简单多线程任务队列
2016/02/27 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
2018/04/02 Python
python高阶爬虫实战分析
2018/07/29 Python
python实现代码统计器
2019/09/19 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
Pytorch Tensor基本数学运算详解
2019/12/30 Python
大二学期个人自我评价
2014/01/13 职场文书
25岁生日感言
2014/01/13 职场文书
民事诉讼代理委托书
2014/10/08 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书
2014年统计工作总结
2014/11/21 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
党员转正党支部意见
2015/06/02 职场文书
网络舆情信息简报
2015/07/21 职场文书
建房合同协议书
2016/03/21 职场文书
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技