如何创建一个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 多线程实现检测服务器在线情况
Nov 25 Python
分享Python字符串关键点
Dec 13 Python
理解python正则表达式
Jan 15 Python
微信跳一跳小游戏python脚本
Jan 05 Python
PyQt5每天必学之切换按钮
Aug 20 Python
Python实现快速计算词频功能示例
Jun 25 Python
Python中logging.NullHandler 的使用教程
Nov 29 Python
详解pyppeteer(python版puppeteer)基本使用
Jun 12 Python
python使用Qt界面以及逻辑实现方法
Jul 10 Python
Python 转换文本编码实现解析
Aug 27 Python
python中字符串的编码与解码详析
Dec 03 Python
PyTorch 实现L2正则化以及Dropout的操作
May 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
分享一则PHP定义函数代码
2015/02/26 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
使用PHPWord生成word文档的方法详解
2019/06/06 PHP
PHP反射基础知识回顾
2020/09/10 PHP
常用参考资料(手册)下载或者链接
2006/07/22 Javascript
JavaScript 提升运行速度之循环篇 译文
2009/08/15 Javascript
JS 用6N±1法求素数 实例教程
2009/10/20 Javascript
javascript 设置某DIV区域内的checkbox复选框
2009/11/30 Javascript
背景图跟随鼠标移动的Mootools插件实现代码
2011/12/12 Javascript
子页向父页传值示例
2013/11/27 Javascript
js实现仿百度汽车频道选择汽车图片展示实例
2015/05/06 Javascript
jQuery的基本概念与高级编程
2015/05/14 Javascript
javascript实现label标签跳出循环操作
2016/03/06 Javascript
JavaScript原生对象常用方法总结(推荐)
2016/05/13 Javascript
ECHO.js 纯javascript轻量级延迟加载的实例代码
2016/05/24 Javascript
JS输出空格的简单实现方法
2016/09/08 Javascript
深入理解JavaScript中的尾调用(Tail Call)
2017/02/07 Javascript
Angular.js实现动态加载组件详解
2017/05/28 Javascript
js实现GIF动图分解成多帧图片上传
2019/10/24 Javascript
微信小程序日历插件代码实例
2019/12/04 Javascript
VueCli生产环境打包部署跨域失败的解决
2020/11/13 Javascript
Python中for循环详解
2014/01/17 Python
Python数据结构与算法之图结构(Graph)实例分析
2017/09/05 Python
Python callable()函数用法实例分析
2018/03/17 Python
利用Python在一个文件的头部插入数据的实例
2018/05/02 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
2019/06/12 Python
python标准库OS模块函数列表与实例全解
2020/03/10 Python
有关pycharm登录github时有的时候会报错connection reset的问题
2020/09/15 Python
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
高中自我评价分享
2013/12/05 职场文书
艾滋病宣传标语
2014/06/25 职场文书
自主招生学校推荐信
2014/09/26 职场文书
你会写报告?产品体验报告到底该怎么写?
2019/08/14 职场文书
如何用Laravel包含你自己的帮助函数
2021/05/27 PHP
Redis 持久化 RDB 与 AOF的执行过程
2021/11/07 Redis