如何创建一个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随机生成数模块random使用实例
Apr 13 Python
将Python的Django框架与认证系统整合的方法
Jul 24 Python
python八皇后问题的解决方法
Sep 27 Python
对python中不同模块(函数、类、变量)的调用详解
Jul 16 Python
django获取from表单multiple-select的value和id的方法
Jul 19 Python
Python数据分析模块pandas用法详解
Sep 04 Python
python 公共方法汇总解析
Sep 16 Python
Django框架模板用法入门教程
Nov 04 Python
基于Pytorch SSD模型分析
Feb 18 Python
Python如何使用input函数获取输入
Aug 06 Python
scrapy在python爬虫中搭建出错的解决方法
Nov 22 Python
Python实现聚类K-means算法详解
Jul 15 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
简单实用的.net DataTable导出Execl
2013/10/28 PHP
ThinkPHP表单数据智能写入create方法实例分析
2015/09/27 PHP
PHP的Yii框架中View视图的使用进阶
2016/03/29 PHP
php注册审核重点解析(数据访问)
2017/05/23 PHP
50个优秀经典PHP算法大集合 附源码
2020/08/26 PHP
跟着Jquery API学Jquery之一 选择器
2010/04/07 Javascript
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
2011/07/04 Javascript
javascript错误的认识不用关心内存管理
2012/12/15 Javascript
深入解析JavaScript中的变量作用域
2013/12/06 Javascript
JavaScript用Number方法实现string转int
2014/05/13 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
jQuery表格插件datatables用法详解
2020/11/23 Javascript
jQuery实现日期联动效果实例
2016/07/26 Javascript
前端实现文件的断点续传(前端文件提交+后端PHP文件接收)
2016/11/04 Javascript
详解angularjs利用ui-route异步加载组件
2017/05/21 Javascript
关于RxJS Subject的学习笔记
2018/12/05 Javascript
小程序实现自定义导航栏适配完美版
2019/04/02 Javascript
JavaScript中将值转换为字符串的五种方法总结
2019/06/06 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
2019/09/05 Javascript
在Python中使用dict和set方法的教程
2015/04/27 Python
Python OS模块常用函数说明
2015/05/23 Python
解析Python中while true的使用
2015/10/13 Python
分享一个可以生成各种进制格式IP的小工具实例代码
2017/07/28 Python
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
2017/10/13 Python
selenium+python实现自动登录脚本
2018/04/22 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
2019/09/29 Python
python实现俄罗斯方块游戏(改进版)
2020/03/13 Python
如何使用Cython对python代码进行加密
2020/07/08 Python
纯css3实现鼠标经过图片显示描述的动画效果
2014/09/01 HTML / CSS
HTML5 window/iframe跨域传递消息 API介绍
2013/08/26 HTML / CSS
Gap加拿大官网:Gap Canada
2017/08/24 全球购物
个人授权委托书范本
2014/04/03 职场文书
焦裕禄精神心得体会
2014/09/02 职场文书
2015年清明节活动总结
2015/02/09 职场文书
酒店办公室主任岗位职责
2015/04/01 职场文书
实现AJAX异步调用和局部刷新的基本步骤
2022/03/17 Javascript