如何创建一个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中的装饰器使用
Jun 20 Python
python 禁止函数修改列表的实现方法
Aug 03 Python
对Python 除法负数取商的取整方式详解
Dec 12 Python
解决Python中定时任务线程无法自动退出的问题
Feb 18 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
May 07 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
Jun 18 Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
Aug 06 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
Nov 07 Python
Python数据可视化:泊松分布详解
Dec 07 Python
使用pyqt 实现重复打开多个相同界面
Dec 13 Python
python编写函数注意事项总结
Mar 29 Python
Python matplotlib绘制条形统计图 处理多个实验多组观测值
Apr 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
html中select语句读取mysql表中内容
2006/10/09 PHP
asp和php下textarea提交大量数据发生丢失的解决方法
2008/01/20 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
2013/09/28 PHP
thinkPHP实现MemCache分布式缓存功能
2016/03/23 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
2016/05/12 PHP
php 使用curl模拟ip和来源进行访问的实现方法
2017/05/02 PHP
PHP实现SMTP邮件的发送实例
2018/09/27 PHP
php经典趣味算法实例代码
2020/01/21 PHP
JavaScript 学习笔记 Black.Caffeine 09.11.28
2009/11/30 Javascript
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
javascript 45种缓动效果 非常酷
2011/06/28 Javascript
Js中获取frames中的元素示例代码
2013/07/30 Javascript
JS保留两位小数,多位小数的示例代码
2014/01/07 Javascript
jquery计算鼠标和指定元素之间距离的方法
2015/06/26 Javascript
DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)
2015/08/18 Javascript
JavaScript图像延迟加载库Echo.js
2016/04/05 Javascript
利用Jquery队列实现根据输入数量显示的动画
2016/09/01 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
如何去除vue项目中的#及其ie9兼容性
2018/01/11 Javascript
JavaScript实现图片懒加载的方法分析
2018/07/05 Javascript
Node.js API详解之 console模块用法详解
2020/05/12 Javascript
[01:08:17]2018DOTA2亚洲邀请赛3月29日 小组赛B组 EG VS VGJ.T
2018/03/30 DOTA
在Python程序中操作MySQL的基本方法
2015/07/29 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
python requests爬取高德地图数据的实例
2018/11/10 Python
python实现录音功能(可随时停止录音)
2020/10/26 Python
html5配合css3实现带提示文字的输入框(摆脱js)
2013/03/08 HTML / CSS
Html5 APP中监听返回事件处理的方法示例
2018/03/15 HTML / CSS
ALDO加拿大官网:加拿大女鞋品牌
2018/12/22 全球购物
新闻网站实习自我鉴定
2013/09/25 职场文书
新闻专业个人求职信
2013/12/19 职场文书
入党积极分子自我鉴定
2014/02/18 职场文书
结婚保证书范文
2014/04/29 职场文书
队名及霸气口号大全
2015/12/25 职场文书
详解nginx.conf 中 root 目录设置问题
2021/04/01 Servers
什么是css原子化,有什么用?
2022/04/24 HTML / CSS