如何创建一个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 相关文章推荐
python3实现读取chrome浏览器cookie
Jun 19 Python
浅谈Python中的zip()与*zip()函数详解
Feb 24 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
Jul 13 Python
python 找出list中最大或者最小几个数的索引方法
Oct 30 Python
Python爬虫 批量爬取下载抖音视频代码实例
Aug 16 Python
python 通过视频url获取视频的宽高方式
Dec 10 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
Apr 13 Python
python plt可视化——打印特殊符号和制作图例代码
Apr 17 Python
Django 解决新建表删除后无法重新创建等问题
May 21 Python
Python爬虫爬取博客实现可视化过程解析
Jun 29 Python
python爬虫爬取网页数据并解析数据
Sep 18 Python
python遍历路径破解表单的示例
Nov 21 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
日本十大最佳动漫,全都是二次元的神级作品
2019/10/05 日漫
php xml常用函数的集合(比较详细)
2013/06/06 PHP
php之XML转数组函数的详解
2013/06/07 PHP
简单实用的.net DataTable导出Execl
2013/10/28 PHP
zf框架的session会话周期及次数限制使用示例
2014/03/13 PHP
PHPStrom中实用的功能和快捷键大全
2015/09/23 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
2016/04/25 PHP
php好代码风格的阶段性总结
2016/06/25 PHP
PHP快速导出百万级数据到CSV或者EXCEL文件
2020/11/27 PHP
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
Javascript限制网页只能在微信内置浏览器中访问
2014/11/09 Javascript
js实现禁止中文输入的方法
2015/01/14 Javascript
javascript 常见功能汇总
2015/06/11 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
基于Two.js实现星球环绕动画效果的示例
2017/11/06 Javascript
vue.js 实现输入框动态添加功能
2018/06/25 Javascript
Js通过AES加密后PHP用Openssl解密的方法
2019/07/12 Javascript
vue3.0 的 Composition API 的使用示例
2020/10/26 Javascript
[01:00:06]加油DOTA_EP01_网络版
2014/08/09 DOTA
pandas的唯一值、值计数以及成员资格的示例
2018/07/25 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
2020/02/21 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
2020/02/25 Python
详解HTML5中的Communication API基本使用方法
2016/01/29 HTML / CSS
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
越南母婴用品购物网站:Kids Plaza
2020/04/09 全球购物
前台文员岗位职责及工作流程
2013/11/19 职场文书
护校行动方案
2014/05/31 职场文书
集中采购方案
2014/06/10 职场文书
体育运动会广播稿
2014/10/05 职场文书
村党建工作汇报材料
2014/11/02 职场文书
博士生专家推荐信
2015/03/25 职场文书
餐厅服务员管理制度
2015/08/05 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server
关于golang高并发的实现与注意事项说明
2021/05/08 Golang