如何创建一个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 相关文章推荐
用C++封装MySQL的API的教程
May 06 Python
Django中URL视图函数的一些高级概念介绍
Jul 20 Python
十个Python程序员易犯的错误
Dec 15 Python
TensorFlow实现创建分类器
Feb 06 Python
python 集合 并集、交集 Series list set 转换的实例
May 29 Python
python 3.6.4 安装配置方法图文教程
Sep 18 Python
浅谈Python脚本开头及导包注释自动添加方法
Oct 27 Python
对python多线程中Lock()与RLock()锁详解
Jan 11 Python
利用Python半自动化生成Nessus报告的方法
Mar 19 Python
Django框架中序列化和反序列化的例子
Aug 06 Python
python3 assert 断言的使用详解 (区别于python2)
Nov 27 Python
Python类中self参数用法详解
Feb 13 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 高手之路(三)
2006/10/09 PHP
奉献出一个封装的curl函数 便于调用(抓数据专用)
2013/07/22 PHP
PHP加Nginx实现动态裁剪图片方案
2014/03/10 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
PHP无限极分类函数的实现方法详解
2017/04/15 PHP
PHP如何将图片文件上传到另外一台服务器上
2019/08/26 PHP
php在linux环境中如何使用redis详解
2020/12/15 PHP
jQuery $.data()方法使用注意细节
2012/12/31 Javascript
javascript中传统事件与现代事件
2015/06/23 Javascript
jQuery中值得注意的trigger方法浅析
2016/12/12 Javascript
js实现适合新闻类图片的轮播效果
2017/02/05 Javascript
浅谈react.js中实现tab吸顶效果的问题
2017/09/06 Javascript
vue实现图书管理demo详解
2017/10/17 Javascript
原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果
2018/05/03 Javascript
JavaScript cookie原理及使用实例
2020/05/08 Javascript
Python开发编码规范
2006/09/08 Python
Python守护进程和脚本单例运行详解
2017/01/06 Python
python常用知识梳理(必看篇)
2017/03/23 Python
python机器学习实战之最近邻kNN分类器
2017/12/20 Python
PyQt5 加载图片和文本文件的实例
2019/06/14 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
Python文字截图识别OCR工具实例解析
2020/03/05 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
国外平面设计第一市场:99designs
2016/10/25 全球购物
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
安德玛加拿大官网:Under Armour加拿大
2019/10/02 全球购物
运行时异常与一般异常有何异同?
2014/01/05 面试题
大三在校生电子商务求职信
2013/10/29 职场文书
军训 自我鉴定
2014/02/03 职场文书
作风大整顿心得体会
2014/09/10 职场文书
邀请函怎么写
2015/01/30 职场文书
2016年“5.12”国际护士节活动总结
2016/04/06 职场文书
Django+Nginx+uWSGI 定时任务的实现方法
2022/01/22 Python
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记
Redis实现一个账号只能登录一个设备
2022/04/19 Redis
MySQL选择合适的备份策略和备份工具
2022/06/01 MySQL