flask扩展 flask-script

本文详细介绍了如何使用Flask-Script扩展为Flask应用增加命令行功能,包括启动开发服务器、自定义命令及参数,以及如何通过shell命令进行调试。

flask扩展 flask-script

flask_script的作用是可以通过命令行的形式来操作flask例如通过一个命令跑一个开发版本的服务器,设置数据库,定时任务等。

# 文档
https://flask-script.readthedocs.io/en/latest/
# 安装
pip install flask-script

使用 runserver

# run_flak.py

from flask_script import Manager
# 新版本的规范都是 flask_xxxx
# 老版本的规范是   flask.ext.xxxx
# 所以看到其他老一些的教程材料,随机应变

app = create_app()     # create_app 自己定义的函数,创建app并返回,可以换成Flask(_name__)
manager = Manager(app) # 理解成包装以下

if __name__ == "__main__":
    manager.run()  # 代替app.run() 
    
    # 比如我们启动的文件叫 run_flak.py
    # 终端使用 python run_flask.py runserver 就启动了,使用的是默认参数

使用shell

# manager还为我们提供了一个shell的交互模式
# python run_flask.py shell
# 但是默认的shell很多模型类没有导入,比如我们的用户model,这样调试不方便
# 重写这个shell
from flask_script import Shell


def make_shell_context():
    from api.core import db
    from api.models import User
    return dict(app=app, db=db, User=User)
# 注册
manager.add_command("shell", Shell(make_context=make_shell_context))

# Ps.
# manager.add_command("shell", Shell(make_context=make_shell_context))
# @app.shell_context_processor
# 效果一样

定义自己的命令

# 运行这个,python run_flask.py dev 
# dev 是函数名
@manager.command
def dev():
    ip = "0.0.0.0"
    port = 9001
    
    try:
        app.run(host=ip,port=port,threaded=True)
    finally:
        cleanup_app()
        
# 还可以给一些参数
# 使用方式 python run_flask.py cmd 0.0.0.0 9999
# manager.command可以换成manager.add_command("runserver", Server())
@manager.command
@manager.option('-h', '--host', dest='host')
@manager.option('-p', '--ip', dest='ip')
def cmd(host, ip):
    """
    自定义命令
    """
    print(host, ip)

补充

安装flask的时候, 默认安装了click   , manager有一些功能和他类似
https://www.cnblogs.com/alexkn/p/6980400.html
@click.command()
@click.option('--count', default=1, help='number of greetings')
@click.argument('name')
def hello(count, name):
    for x in range(count):
        click.echo('Hello %s!' % name)
<think>好的,我需要帮助用户了解如何在Python Flask项目中集成和使用Flask-Toastr实现消息提示功能。首先,我需要回忆Flask-Toastr的基本知识。Flask-Toastr是一个Flask扩展,用于在Web应用中显示Toast通知,类似于Bootstrap的提示消息。它基于Toastr库,所以用户需要先加载Toastr的CSS和JavaScript文件。 接下来,我应该按照步骤来组织回答。首先应该是安装Flask-Toastr库,用户需要使用pip进行安装。然后是在Flask应用中初始化扩展,这通常通过创建Toastr实例并将其初始化到app对象上完成。 接下来是配置部分。可能需要设置一些Toastr的选项,比如位置、消失时间等。这些可以在Flask的配置中进行设置,比如使用`TOASTR_POSITION_CLASS`等配置项。 然后是如何在模板中加载资源。用户需要在基模板中使用`toastr.load_resources()`来引入CSS和JS文件。这部分需要确保模板正确继承,并且资源被正确加载。 关于消息提示的具体使用,用户需要在视图函数中使用`flash()`函数传递消息,并在模板中使用`toastr.messages()`来显示。需要提醒用户注意消息的类别,比如success、error、info等,以便Toastr正确显示样式。 还需要注意Flask的secret_key配置,因为flash消息依赖于session,而session需要secret_key。用户可能容易忘记这一步,所以应该特别指出。 最后,可能需要提供一个简单的示例代码,展示从初始化到显示消息的整个流程。同时,参考用户提供的引用,特别是引用[2]关于Flask-Bootstrap的使用,可能需要在模板中结合Bootstrap,这样Toastr的样式会更协调。 现在需要检查是否有遗漏的步骤,比如版本兼容性问题,或者常见的错误。例如,是否需要在HTML中引入jQuery,因为Toastr依赖jQuery。用户可能需要先加载jQuery,再加载Toastr的JS文件。这点很重要,如果顺序不对,可能会导致Toastr无法正常工作。 此外,用户提到的引用[3]中的路由示例,可能需要在视图函数中正确传递消息,比如使用flash(),然后在模板中渲染。可能需要展示如何在路由中使用flash,并结合Toastr显示。 总结步骤应该是: 1. 安装Flask-Toastr 2. 初始化扩展 3. 配置参数(可选) 4. 在模板中加载资源(包括jQuery和Toastr的CSS/JS) 5. 在视图函数中使用flash发送消息 6. 在模板中显示消息 需要确保这些步骤清晰,并检查每个环节的代码示例是否正确。比如,在模板中是否正确地使用`super()`来保留基模板的内容,特别是在使用Flask-Bootstrap时,可能需要使用块来插入资源。 可能还需要提醒用户关于消息的类别,比如使用flash('消息', 'success')来指定类型,否则默认可能是其他类别。此外,如果用户遇到消息不显示的问题,可能需要检查是否有多个基模板,或者资源加载顺序的问题。 最后,生成相关问题,可能涉及如何自定义样式、如何处理动态消息、如何结合其他扩展Flask-Bootstrap,或者如何解决常见问题,比如消息不显示等。</think>### 如何在Flask中集成Flask-Toastr实现消息提示 #### 1. 安装Flask-Toastr库 ```bash pip install flask-toastr ``` #### 2. 初始化扩展Flask应用主文件中初始化Toastr: ```python from flask import Flask from flask_toastr import Toastr app = Flask(__name__) app.secret_key = 'your_secret_key_here' # 必须设置,用于flash消息[^2] toastr = Toastr(app) ``` #### 3. 配置参数(可选) 在配置文件中设置Toastr样式参数: ```python app.config['TOASTR_POSITION_CLASS'] = 'toast-top-right' # 消息位置 app.config['TOASTR_TIMEOUT'] = 5000 # 自动关闭时间(毫秒) ``` #### 4. 在基模板中加载资源 在`base.html`模板中添加资源加载(需继承`bootstrap/base.html`若使用Flask-Bootstrap): ```html <!DOCTYPE html> <html> <head> {{ toastr.load_resources() }} <!-- 确保jQuery已加载(需在Toastr之前) --> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> </head> <body> {% block content %}{% endblock %} {{ toastr.messages() }} <!-- 显示消息 --> </body> </html> ``` #### 5. 发送消息的视图函数 在路由中使用`flash()`发送消息并指定类别: ```python from flask import flash, redirect, url_for @app.route('/demo') def demo(): flash('操作成功!', 'success') # 支持success/error/info/warning类型 flash('文件大小超过限制', 'error') return redirect(url_for('index')) ``` #### 6. 页面渲染效果 消息会自动通过Toastr以浮动提示形式展示,样式由配置参数控制。 #### 注意事项 1. **依赖顺序**:需先加载jQuery再加载Toastr资源 2. **消息分类**:使用`flash(message, category)`的第二参数匹配Toastr样式 3. **Bootstrap兼容性**:可与Flask-Bootstrap结合,在`styles`和`scripts`块中插入资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值