Flask学习教程(一)hello world !

Flask中文文档  点击即可进去

打开pycharm  ,  file  new project   flask    新建一个flask  项目

创建后

创建虚拟环境 

mkvirtualenv flash

选择对应虚拟环境的解释器

你们与我的可能不同,我的虚拟环境 ,专门新建了一个文件夹

安装 flask

pip install flask 

换成过呢源,会下载的很快

启动项目

结果

还可接受html 格式 文件

重启项目再刷新,自身不会自动刷新

像Django 一样,在命令行输入参数,

pip install  flask-script

把 app 名字改为: manage

-r   自动加载,--threaded  开启多线程

项目拆分

1。 新建项目,app 改为 manage

创建manager 对象

2.新建包 App

把template  statis 移到里面

新建  views  models.py 

 把视图函数 放到 views 中,app 从manager 导入

此刻还不能启动  

切记 循环导入

manage.py 


from App import create_app

app = create_app()
manager = Manager(app=app)

if __name__ == '__main__':
    manager.run()


views.py


def init_route(app):

    @app.route('/')
    def hello_world():
        return 'Hello World!'

__init__.py

from App.views import init_route


def create_app():
    app = Flask(__name__)

    init_route(app)

    return  app








启动

在此写路由

结果

路由的管理

  • 使用的时候容易出现循环引用的问题

  • 使用懒加载的方法

    使用函数调用的形式进行加载

  • 使用新方案解决

    蓝图

    代表一种规划

    路由的规划

    flask-blueprint

pip install flask-blueprint

使用蓝图

先注册蓝图,再引用

结果

重启后 反应较快。-r 感觉还不太行

使用蓝图

把view 转换成包,新建first_blue,  把项目下的代码拷贝到新建文件下

再导包

结果

创建第二个蓝图

from flask import Blueprint

second=Blueprint('second',__name__)

@second.route('/hello/')
def hello():
    return 'second'

结果

改进代码

结果

显示 html 页面

也面串参    字典

SQLAlchemy 官方文档 2.0

1. 安装SQLalchemy 

pip install flask-sqlalchemy

创建模型

配置 数据库连接

运行后

 添加配置

添加字段

 添加函数,执行函数

出现数据库标识

右击打开数据库

创建成功

简单实现保存到数据库

view

 

# 改进 就使用 model.save

调用save 方法

结果

删除数据库

将据库 改为 mysql: 

def create_app():
    app = Flask(__name__)

    # init_route(app)
    # app.register_blueprint(blue)
    # app.register_blueprint(second)
    # 连接数据库
    #  URI样式: 数据库 + 驱动://用户名:密码@主机:端口/具体哪一个库
    # app.config['SQLALCHEMY_DATABASE_URI'] ='sqlite:///sqlite.db'
    app.config['SQLALCHEMY_DATABASE_URI'] ='mysql+pymysql://root:@localhost:3306/helloflask'
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=False
    # 调用模型函数方法
    # init_model(app=app)
    init_ext(app)

    #  去views 下的__init__  初始化  调用
    init_view(app=app)
    return app

安装pymysql ,新建的虚拟环境

配置开发 测试  演示 ,生产 环境

def get_db_uri(dbinfo):
    engine = dbinfo.get('ENGINE') or 'sqlite'
    driver= dbinfo.get('DRIVER') or 'sqlite'
    user = dbinfo.get('USER') or ''
    password = dbinfo.get('PASSWORD') or ''
    host = dbinfo.get('HOST') or 'loaclhost'
    port = dbinfo.get('PORT') or ''
    name = dbinfo.get('NAME') or ''

    return '{}+{}://{}@{}:{}/{}'.format(engine,driver,user,password,host,port,name)


class Config:
    DEBUG  =  False
    TESTING = False
    SQLALCHEMY_TRACK_MODIFICATIONS = False

#  开发环境
class DevelopConfig(Config):
    DEBUG = True
    dbinfo = {
        'ENGINE':'mysql',
        'DRIVER':'pymysql',
        'USER':'root',
        'PASSWORD':'',
        'HOST':'localhost',
        'PORT':'3306',
        'NAME':'helloflask'
    }

    SQLALCHEMY_DATABASE_URI=get_db_uri(dbinfo)


# 测试环境
class TestConfig(Config):
    TESTING = True
    dbinfo = {
        'ENGINE':'mysql',
        'DRIVER':'pymysql',
        'USER':'root',
        'PASSWORD':'',
        'HOST':'localhost',
        'PORT':'3306',
        'NAME':'helloflask'
    }

    SQLALCHEMY_DATABASE_URI=get_db_uri(dbinfo)

# 演示环境
class stagingConfig(Config):
    dbinfo = {
        'ENGINE':'mysql',
        'DRIVER':'pymysql',
        'USER':'root',
        'PASSWORD':'',
        'HOST':'localhost',
        'PORT':'3306',
        'NAME':'helloflask'
    }

    SQLALCHEMY_DATABASE_URI=get_db_uri(dbinfo)

# 生产环境
class ProductConfig(Config):
    dbinfo = {
        'ENGINE':'mysql',
        'DRIVER':'pymysql',
        'USER':'root',
        'PASSWORD':'',
        'HOST':'localhost',
        'PORT':'3306',
        'NAME':'helloflask'
    }

    SQLALCHEMY_DATABASE_URI=get_db_uri(dbinfo)



让flask 执行迁移,像Django一样

Flask-Migrate¶

from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy

migrate = Migrate()
models = SQLAlchemy()
def init_ext(app):
    models.init_app(app)
    migrate.init_app(app,models)

使用migrate 命令执行迁移

第一次使用 db ,执行初始化

生成迁移文件

python manage.py db migrate

此时 数据库 还没有 生成表。执行迁移文件

python manage.py db upgrade

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值