千家信息网

flask框架如何使用

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,今天小编给大家分享一下flask框架如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一
千家信息网最后更新 2024年09月22日flask框架如何使用

今天小编给大家分享一下flask框架如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一、Flask蓝图目录

我们建立好的一个目录结构,一层一层的看一下,首先是app目录,它就是我们的主应用程序目录了,其中有一个__init__.py文件,里面的内容如下:

app/init.py

from flask import Flaskfrom .views.acc import acc_bpfrom .views.user import user_bpdef create_app():    my_app = Flask(__name__)    my_app.register_blueprint(acc_bp)    my_app.register_blueprint(user_bp)    return my_appapp/__init__.py

__init__.py就是构建app的一个函数,并且将views中的蓝图注册进去了。

接下来看static目录,这个目录从字面意思就可以理解了,是我们的static静态文件存放目录。

然后就是templates目录,即模板存放目录。

views目录,主角终于登场了,这里存放的就是视图函数文件,也就是我们Blueprint,每一个文件就是一个Blueprint,如下:
views/acc.py

from flask import Blueprintacc_bp = Blueprint('acc', __name__)@acc_bp.route("/acc")def accfunc():    return "my_app.acc"views/acc.py

views/user.py

from flask import Blueprintuser_bp = Blueprint('user', __name__)@user_bp.route("/login")def user_login():    return "my_app.user"views/user.py

接下来就是关键性的一个文件manager.py,项目的启动文件,内容如下:

manager.py

from app import create_appmy_app = create_app()if __name__ == '__main__':    my_app.run()manager.py

二、Flask-SQLAlchemy

1、安装

pip install Flask-SQLAlchemy

2、接下来基于上面的Flask项目,我们要加入Flask-SQLAlchemy让项目变得生动起来

2.1 加入Flask-SQLAlchemy第三方组件

app/__init__.py

from flask import Flaskfrom flask_sqlalchemy import SQLAlchemy    # 导入Flask-SQLAlchemy中的SQLAlchemydb = SQLAlchemy()   # 实例化SQLAlchemy# 注意:实例化SQLAlchemy的代码必须要在引入蓝图之前# 引入蓝图from .views.acc import acc_bpfrom .views.user import user_bpdef create_app():    my_app = Flask(__name__)    # 初始化app配置,专门针对SQLAlchemy 进行配置    my_app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:@127.0.0.1:3306/wll?charset=utf8"    my_app.config["SQLALCHEMY_POOL_SIZE"] = 5    # SQLAlchemy的连接池大小    my_app.config["SQLALCHEMY_POOL_TIMEOUT"] = 15   # SQLAlchemy的连接超时时间    my_app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False    db.init_app(my_app)  # 初始化SQLAlchemy , 本质就是将以上的配置读取出来    my_app.register_blueprint(acc_bp)    my_app.register_blueprint(user_bp)    return my_appapp/__init__.py

2.2 在app目录下建立models.py(ORM模型文件)

app/models.py

from app import db# from sqlalchemy.ext.declarative import declarative_base# Base = declarative_base()# 之前我们在创建数据表的时候都要做这样一件事,然而Flask-SQLAlchemy已经为我们把 Base 封装好了,即db.Model# 建立users数据表class Users(db.Model):    __tablename__ = 'users'    # __table_args__ = {"useexisting": True}    # Flask-SQLAlchemy 也为我们封装好了Column,Integer,String等    id = db.Column(db.Integer, primary_key=True)    name = db.Column(db.String(32))    password = db.Column(db.String(32))if __name__ == '__main__':    from app import create_app    my_app = create_app()    # 这里你要回顾一下Flask应用上下文管理了    # 离线脚本:    with my_app.app_context():        db.drop_all()        # 删除所有表        db.create_all()      # 创建表app/models.py

2.3 登录视图函数

还记不记得我们在sqlalchemy中手动打开会话 db_session

 from sqlalchemy.orm import sessionmaker   Session = sessionmaker(engine)   db_session = Session()

现在不用了,因为 Flask-SQLAlchemy 也已经为我们做好会话打开的工作

from flask import Blueprint, request, render_templateuser_bp = Blueprint('user', __name__)from app.models import Usersfrom app import db@user_bp.route("/login", methods=['GET', 'POST'])def user_login():    if request.method == 'POST':        username = request.form.get('username')        password = request.form.get('password')        # 还记不记得我们在sqlalchemy中手动打开会话 db_session        # from sqlalchemy.orm import sessionmaker        # Session = sessionmaker(engine)        # db_session = Session()        # 现在不用了,因为 Flask-SQLAlchemy 也已经为我们做好会话打开的工作        db.session.add(Users(name=username,password=password))        db.session.commit()        # 查询        user_obj = Users.query.filter(Users.name == username and Users.password == password).first()        if user_obj:            return f"{user_obj.name}登录成功"    return render_template("login.html")views/user.py

2.4 登陆页面

    Title
templates/login.html

三、Flask-Script

1、安装

pip install Flask-Script

2、接下来再基于上面的项目,加入Flask-Script,使我们可以用命令启动项目

其实本部分就是为下面的Flask-Migrate做铺垫,Flask-Script 顾名思义就是 Flask 的脚本。你是否还记得Django的启动命令呢?没错,就是 python manager.py runserver,其实Flask也可以做到,基于 Flask-Script 就可以了。

3.1 将Flask-Script加入到Flask项目中

from flask_script import Manager    # 导入Flask-Script中的Managerfrom app import create_appmy_app = create_app()manager = Manager(my_app)    # 让app支持managerif __name__ == '__main__':    # my_app.run()    manager.run()   # 替换原来的 my_app.run() 就可以了manager.py

3.2 使用命令启动Flask项目

python manager.py runserver

3.3 启动Flask项目,并更改配置参数(监听的IP地址和端口号)

python manager.py runserver -h 0.0.0.0 -p 9527

3.4 高级操作 - 自定制脚本命令

方式一:@manager.command

from flask_script import Manager    # 导入Flask-Script中的Managerfrom app import create_appmy_app = create_app()manager = Manager(my_app)    # 让app支持manager@manager.commanddef runflask(arg):    # my_app.run()   # 释放此句项目humg住    print(arg)if __name__ == '__main__':    # my_app.run()    manager.run()   # 替换原来的 my_app.run() 就可以了manager.py

执行命令:

python manager.py runflask 22

执行命令:

python manager.py talk -n 你 -s 厉害python manager.py talk --name 我 --say 厉害

四、Flask-Migrate

1、安装

pip install Flask-Migrate

2、继续基于上面的项目,使Flask项目支持makemigration和migrate

4.1 将 Flask-Migrate (注意:Flask-Migrate要依赖Flask-Script组件)加入到项目中

from flask_script import Manager    # 导入Flask-Script中的Manager# 导入 Flask-Migrate 中的 Migrate 和 MigrateCommand# 这两个东西说白了就是想在 Flask-Script 中添加几个命令和指令而已from flask_migrate import Migrate, MigrateCommandfrom app import create_appmy_app = create_app()manager = Manager(my_app)    # 让app支持managerfrom app import dbMigrate(my_app, db)  # 既然是数据库迁移,那么就得告诉他数据库在哪里,并且告诉他要支持哪个app# 接下来再告诉manager 有新的指令了,这个新指令在MigrateCommand 中存着呢manager.add_command("database", MigrateCommand)  # 当你的命令中出现 database 指令,则去MigrateCommand中寻找对应关系"""数据库迁移指令:python manager.py database init python manager.py database migrate     # 相当于Django中的 makemigrationpython manager.py database upgrade     # 相当于Django中的 migrate"""@manager.commanddef runflask(arg):    # my_app.run()   # 释放此句项目humg住    print(arg)@manager.option("-n", "--name", dest="name")@manager.option("-s", "--say", dest="say")def talk(name, say):    print(f"{name}可真{say}")if __name__ == '__main__':    # my_app.run()    manager.run()   # 替换原来的 my_app.run() 就可以了manager.py

4.2 执行数据库初始化指令

python manager.py database init

此时你会发现你的项目目录中出现了一个migrations目录

4.3 执行数据库迁移指令

python manager.py database migrate     # 相当于Django中的 makemigrationpython manager.py database upgrade     # 相当于Django中的 migrate

此时你会发现数据库中出现了一个users表。

以上就是"flask框架如何使用"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

项目 目录 就是 命令 数据 指令 文件 数据库 面的 支持 接下来 内容 知识 篇文章 蓝图 配置 函数 脚本 框架 厉害 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 一网址数据库出错怎么办 数据库原理与技术总结感想 河南服务器机房推荐厂家 聊天软件开发结构 霸气网络安全公文语 帮百事互联网科技有限公司 技校学计算机网络技术什么样 网络安全儿歌改编 锐捷网络技术支持面经 服务器未响应是网络原因吗 公司域服务器的管理 hbase分布式数据库爬虫 软件开发长期待摊费用 安徽仓储生鲜配送软件开发 软件开发中的业务痛点 oa服务器电脑配置推荐 如何配置网络技术团队 顺德科技创新中心互联网 网络安全宣传海报手绘漫画大学 学生成绩数据库查询选修 宿迁新品联想服务器厂家直供 辽宁正规软件开发服务价钱 互联网文化科技创意 六盘水淘宝客软件开发 软件开发培训从哪里入手 定兴软件开发技术 松江区专业性网络技术活动方案 中国香港文档软件开发哪家强 软件开发中级工程师工资 普陀区特定软件开发生产厂家
0