35、flask--Flask-Script使用详细

一、介绍和安装    

      Flask-Script的作用是可以通过命令行的形式来操作Flask。例如通过命令跑一个开发版本的服务器、设置数据库,定时任务等。要使用Flask-Script,可以通过`pip install flask-script`安装最新版本。

二、基本使用步骤:

第一步:创建manage.py文件

第二步:在manage.py中搭建基本框架

from flask_script import Manager
from flask_learn import app

manager = Manager(app)
manager.run()

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

三、命令的添加方式

1. 使用`manage.commad`:这个方法是用来添加那些不需要传递参数的命令。示例代码如下:

from flask_script import Manager
from flask_learn import app
manager = Manager(app)

@manager.command
def greet():
    print('你好')

执行代码:


 
2. `使用manage.option`:这个方法是用来添加那些需要传递参数的命令。有几个参数就需要写几个`option`。示例代码如下:

@manager.option("-u","--username",dest="username")
@manager.option("-e","--email",dest="email")
def add_user(username,email):
    print("你输入的用户名:%s 邮箱:%s"%(username,email))

执行代码

案例:如何添加超级管理员呢?

第一步:在config中配置数据库

# Author:北京
# QQ:838262020
# time:2021/1/9
# 配件信息

DEBUG = True
# 修改代码后自动重新加载
TEMPLATES_AUTO_RELOAD=True
# 数据库配置
HOSTNAME = '127.0.0.1'

PORT = 3306

DATABASE = 'test_flask_learn'

USERNAME = 'root'

PASSWORD ='123456'

#dialect+driver://username:password@host:port/database
DB_URI = "mysql+pymysql://{username}:{password}@{host}:{port}/" \
         "{db}?charset=utf8".format(username=USERNAME,password=PASSWORD,host=HOSTNAME,port=PORT,db=DATABASE)

#SQLALCHEMY_DATABASE_URI是定死的,只能这么写
SQLALCHEMY_DATABASE_URI = DB_URI
SQLALCHEMY_TRACK_MODIFICATIONS = False


第二步:创建数据模型和配置数据库:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import config

app = Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)


class BackendUser(db.Model):
    __tablename__ = 'backend_user'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(50), nullable=False)
    password = db.Column(db.String(50), nullable=False)

db.create_all()

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


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

第三步:在mange.py中创建超级管理员并保存到数据库中

from flask_script import Manager
from flask_learn import app,BackendUser,db
from db_script import db_manager
manager = Manager(app)




@manager.option("-u","--username",dest="username")
@manager.option("-p","--password",dest="password")
def add_user(username,password):
    user=BackendUser(username=username,password=password)
    db.session.add(user)
    db.session.commit()




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

第四步:在终端输入 python manage.py add_user -u bj -p 123456 创建超级管理员

3. 如果有一些命令是针对某个功能的。比如有一堆命令是针对ORM与表映射的,那么可以将这些命令单独放在一个文件中方便管理。也是使用`Manager`的对象来添加。然后到主manage文件中,通过`manager.add_command`来添加。示例代码如下

第一步:在db_script.py中搭建基本创建

from flask_script import Manager

db_manager =Manager()

@db_manager.command
def init():
    print("迁移仓库创建完成")

@db_manager.command
def revision():
    print("迁移脚本生成成功")


@db_manager.command
def upgrade():
    print("脚本映射到数据库成功")

第二步:将 db_script导入manage.py文件中,其中

manager.add_command("db",db_manager) 运行db_manager中的函数,在db下的子脚本运行。

 执行代码:

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 Flask-SocketIO 库来实现在 Python使用 Flask 和 SocketIO 进行流式返回。以下是一个简单的示例代码: 首先,确保你已经安装了 Flask-SocketIO 库。你可以使用以下命令进行安装: ``` pip install flask-socketio ``` 然后,在你的 Flask 应用程序中导入必要的模块和类: ```python from flask import Flask, render_template from flask_socketio import SocketIO, emit app = Flask(__name__) app.config['SECRET_KEY'] = 'secret!' socketio = SocketIO(app) ``` 接下来,定义一个路由来渲染包含 SocketIO 客户端代码的 HTML 模板: ```python @app.route('/') def index(): return render_template('index.html') ``` 在 HTML 模板中,你可以将 SocketIO 客户端代码放在合适的位置,例如在 `<head>` 标签之后: ```html <!DOCTYPE html> <html> <head> <!-- 其他头部内容 --> </head> <body> <!-- 页面主体内容 --> <script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/1.3.6/socket.io.min.js"></script> <script type="text/javascript"> var socket = io.connect('http://' + document.domain + ':' + location.port); socket.on('message', function(data) { // 处理接收到的消息 console.log(data); }); // 发送消息到服务器 socket.emit('my event', {data: 'Message from client'}); </script> </body> </html> ``` 接下来,你可以定义一个事件处理器来处理客户端发送的消息,并返回流式数据: ```python @socketio.on('my event') def handle_my_custom_event(data): # 处理接收到的消息 # 这里可以进行一些耗时的操作,然后将结果逐步返回给客户端 for i in range(10): socketio.sleep(1) # 模拟耗时操作 emit('message', 'Step {}'.format(i)) emit('message', 'Final result') ``` 最后,运行应用程序: ```python if __name__ == '__main__': socketio.run(app) ``` 现在,当你访问应用程序的首页时,它将加载包含 SocketIO 客户端代码的 HTML 模板。客户端代码将连接到服务器的 SocketIO 通道,并发送一个名为 'my event' 的事件。服务器将接收到这个事件,并通过逐步返回的方式向客户端发送消息。 请根据你的需求进行适当修改和扩展以上示例代码。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值