如何创建一个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 smallseg分词用法实例分析
May 28 Python
Python判断直线和矩形是否相交的方法
Jul 14 Python
十个Python程序员易犯的错误
Dec 15 Python
Python编程实现二叉树及七种遍历方法详解
Jun 02 Python
JPype实现在python中调用JAVA的实例
Jul 19 Python
python2.7和NLTK安装详细教程
Sep 19 Python
Python微医挂号网医生数据抓取
Jan 24 Python
python中字符串数组逆序排列方法总结
Jun 23 Python
PyQt5响应回车事件的方法
Jun 25 Python
Python中利用LSTM模型进行时间序列预测分析的实现
Jul 26 Python
python爬虫开发之urllib模块详细使用方法与实例全解
Mar 09 Python
python实现双人五子棋(终端版)
Dec 30 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
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
2006/10/09 PHP
PHP 操作文件的一些FAQ总结
2009/02/12 PHP
php查询mysql数据库并将结果保存到数组的方法
2015/03/18 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
2019/09/10 PHP
js 复制或插入Html的实现方法小结
2010/05/19 Javascript
node.js中的http.createClient方法使用说明
2014/12/15 Javascript
Bootstrap网格系统详解
2016/04/26 Javascript
js实现String.Fomat的实例代码
2016/09/02 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
NodeJS测试框架mocha入门教程
2017/03/28 NodeJs
基于JSONP原理解析(推荐)
2017/12/04 Javascript
详解angular路由高亮之RouterLinkActive
2018/04/28 Javascript
Vue中全局变量的定义和使用
2019/06/05 Javascript
three.js利用gpu选取物体并计算交点位置的方法示例
2019/11/25 Javascript
微信小程序canvas截取任意形状的实现代码
2020/01/13 Javascript
举例介绍Python中的25个隐藏特性
2015/03/30 Python
python语言使用技巧分享
2016/05/31 Python
Python中easy_install 和 pip 的安装及使用
2017/06/05 Python
requests和lxml实现爬虫的方法
2017/06/11 Python
python中使用xlrd读excel使用xlwt写excel的实例代码
2018/01/31 Python
关于django 数据库迁移(migrate)应该知道的一些事
2018/05/27 Python
Pytorch中accuracy和loss的计算知识点总结
2019/09/10 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
2020/01/13 Python
python爬虫容易学吗
2020/06/02 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
2020/06/18 Python
python爬虫用mongodb的理由
2020/07/28 Python
AmazeUI导航的示例代码
2020/08/14 HTML / CSS
人事专员职责
2014/02/22 职场文书
动画设计系毕业生求职信
2014/07/15 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
详解RedisTemplate下Redis分布式锁引发的系列问题
2021/04/27 Redis
MySQL 全文索引使用指南
2021/05/25 MySQL
Python Pandas常用函数方法总结
2021/06/15 Python
Vue全局事件总线你了解吗
2022/02/24 Vue.js
Python采集爬取京东商品信息和评论并存入MySQL
2022/04/12 Python