Flask学习教程(一)hello world !

  • Post author:
  • Post category:其他



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



版权声明:本文为qq_36582955原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。