如何创建一个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实现暴力穷举博客园密码
Jun 19 Python
Python3使用PyQt5制作简单的画板/手写板实例
Oct 19 Python
解决python线程卡死的问题
Feb 18 Python
Python Django给admin添加Action的方法实例详解
Apr 29 Python
Django 模型类(models.py)的定义详解
Jul 19 Python
django ManyToManyField多对多关系的实例详解
Aug 09 Python
安装多个版本的TensorFlow的方法步骤
Apr 21 Python
pycharm实现print输出保存到txt文件
Jun 01 Python
keras的backend 设置 tensorflow,theano操作
Jun 30 Python
简单的Python人脸识别系统
Jul 14 Python
如何使用Django Admin管理后台导入CSV
Nov 06 Python
Python基础之数据类型知识汇总
May 18 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项目中比较通用的php自建函数的详解
2013/06/06 PHP
解析thinkphp中的M()与D()方法的区别
2013/06/22 PHP
JavaScript的public、private和privileged模式
2009/12/28 Javascript
jquery中load方法的用法及注意事项说明
2014/02/22 Javascript
div失去焦点事件实现思路
2014/04/22 Javascript
一个简单的jquery的多选下拉框(自写)
2014/05/05 Javascript
javascript实现博客园页面右下角返回顶部按钮
2015/02/22 Javascript
jquery+css实现的红色线条横向二级菜单效果
2015/08/22 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
jQuery实现的精美平滑二级下拉菜单效果代码
2016/03/28 Javascript
angularJS 如何读写缓冲的方法(推荐)
2016/08/06 Javascript
React组件的三种写法总结
2017/01/12 Javascript
原生node.js案例--前后台交互
2017/02/20 Javascript
Windows下快速搭建NodeJS本地服务器的步骤
2017/08/09 NodeJs
搭建vue开发环境
2018/07/19 Javascript
Bootstrap-table自定义可编辑每页显示记录数
2018/09/07 Javascript
JS中appendChild追加子节点无效的解决方法
2018/10/14 Javascript
vue实现自定义H5视频播放器的方法步骤
2019/07/01 Javascript
Python MySQLdb Linux下安装笔记
2015/05/09 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
2016/01/20 Python
Python的Flask框架中配置多个子域名的方法讲解
2016/06/07 Python
python利用rsa库做公钥解密的方法教程
2017/12/10 Python
Python实现的建造者模式示例
2018/08/06 Python
PyQt5 窗口切换与自定义对话框的实例
2019/06/20 Python
django如何实现视图重定向
2019/07/24 Python
快速解决jupyter notebook启动需要密码的问题
2020/04/21 Python
Python如何将装饰器定义为类
2020/07/30 Python
pycharm 的Structure界面设置操作
2021/02/05 Python
仿CSDN Blog返回页面顶部功能实现原理及代码
2013/06/30 HTML / CSS
技校毕业生个人学习的自我评价
2014/02/21 职场文书
2014年单位植树节活动方案
2014/03/23 职场文书
青岛导游词
2015/02/12 职场文书
一篇文章弄懂MySQL查询语句的执行过程
2021/05/07 MySQL
Win11局域网共享权限在哪里设置? Win11高级共享的设置技巧
2022/04/05 数码科技
Win10 Anaconda安装python-pcl
2022/04/29 Servers
Android开发手册自定义Switch开关按钮控件
2022/06/10 Java/Android