flask基本操作过程

flask基本操作过程

1,相关模块

python3.7

安装flask及其依赖: flask

flask_sqlalchemy 用Flask对象初始化SQLAlchemy,可以在flask项目中使用MTV模式进行各种对数据库的操作

flask_migrate,flask_script 用于数据库的迁移操作,其中flask_script用来设置应用程序通过指令操作;flask_migrate导入数据库迁移类和数据库迁移指令类

flask_session: 对flask里面配合redis对session进行操作,存储或清除字段

flask_blueprint; 可以让flask对象注册多个蓝图对象,相当于插入了blueprint的包装器,能够分割功能模块,能够更清晰的进行业务开发,而不是将所有的业务处理都写在一个views里

2.创建flask项目

3.修改app.py文件

#导入flask模块
from flask import Flask
# 创建Flask的实例app,并设置共享网页文件夹templates的访问位置
app = Flask(__name__,template_folder='static/templates')
# 设置代码发生改变时,自动启动服务器
app.debug=True

4.在flask文件下引入数库封装文件de_oprate.py

# 导入SQLAlchemy,可操作数据库以及连接数据库
from flask_sqlalchemy import SQLAlchemy
# 导入app工程文件
from app import app

class Config(object):
    # 连接数据库(格式:'mysql://用户名:密码@ip:端口号/数据库名')
    SQLALCHEMY_DATABASE_URI = "mysql://root:11111111@127.0.0.1:3306/gushi"
    # 这个值可以设置,也可以不设置,如果不设置,那么会一直报警告
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    # 这里有个坑,在lask-sqlalchemy 2.0之后就不在需要设置这一项了。
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True
app.config.from_object(Config)
# 数据库连接(生成一个数据库操作对象)
db = SQLAlchemy(app)

5.在app1文件夹下创建model.py文件

# 导入db_operate文件中的db数据库
from db_operate import db
# 创建简单的用户账号,密码模型
class User(db.Model):
    userid = db.Column(db.Integer,primary_key=True,autoincrement=True)
    username = db.Column(db.String(77),nullable=False,unique=True)
    password = db.Column(db.String(77),nullable=False)
    # 表格更名
    __tablename__ = 'user'

6.在flask文件下创建manage.py文件,在其中配置数据库的迁移操作。

# 导入app工程
from app import app
# 导入数据库
from db_operate import db
# 导入Manager用来设置应用程序可通过指令操作
from flask_script import Manager
导入数据库迁移类和数据库迁移指令类
from flask_migrate import Migrate,MigrateCommand

# 构建指令,设置当前app受指令控制(即将指令绑定给指定app对象)
manage = Manager(app)
# 构建数据库迁移操作,将数据库迁移指令绑定给指定的app和数据库
migrate = Migrate(app,db)
# 添加数据库迁移指令,该操作保证数据库的迁移可以使用指令操作
manage.add_command('db',MigrateCommand)

#以下为当指令操作runserver时,开启服务。
if __name__ == '__main__':
    manage.run()

7.数据库相关迁移指令

python manage.py db init(只运行一次,为生成migrations文件夹,以便之后数据改变,版本迁移)

python manage.py db migrate (完成迁移)

python manage.py db upgrade(更新数据库表格)

python manage.py db history(查看版本号)

python manage.py db downgrade 版本号 (恢复历史版本)

注意:在执行数据库迁移时可能出现 No changes in schema detected.

​ 解决方法在de_oprate.py导入要迁移的models即可

8.在app.py中注册蓝图。

from app import app
# 导入app1/views.py中创建的蓝图
from app1.views import user
# 注册该蓝图
app.register_blueprint(user, url_prefix='/user')

9.在app1/templates下,创建前端网页。之后在app1下创建views.py。

# 导入渲染模块,蓝图模块,数据传输模块,路由分配模块
from flask import render_template, Blueprint, request,url_for
# 导入创建的模型,用来完成下面定义功能时对数据库的操作
from .models import *
# 导入json,来完成前后端的数据交互
import json

# 创建蓝图。蓝图必须有前两个参数,为“蓝图名”,“当前运行文件名”。后两个是设置蓝图文件夹(蓝图文件夹即为app1文件夹)在访问私有网页文件夹templates的位置目录,以及私有静态文件的位置目录
app1 = Blueprint('app1', __name__, template_folder='templates',static_folder='static')


@user.route('/test/',endpoint='test')
def show_test():
    return render_template('test.html')

10.flask中常用的钩子函数

  • before_first_request处理第一次请求之前执行
  • before_request 在每次请求之前执行. 通常使用这个钩子函数预处理一些变量, 视图函数可以更好调用
  • teardown_appcontext 当APP上下文被移除之后执行的函数, 可以进行数据库的提交或者回滚
  • template_filter增加模板过滤器
  • context_processor上下文处理器, 返回的字典可以在全部模板中使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值