django、flask自定义命令
1.flask 之创建和运行2.flask之配置文件3.flask 路由、钩子函数4.flask之蓝图和前后端变量传递5.python之任务调度(APScheduler和schedule)6.flask之cbv、模版7.flask之请求对象、响应对象、cookies和session8.falsk之闪现、wtforms表单
9.django、flask自定义命令
10.flask 之信号(事件)、信号量(计数器、锁)11.flask之 sqlalchemy 原生操作和增删改查12.flask之sqlalchemy ORM 一对多、多对多13.flask之 scoped实现线程安全.py14.flask之 sqlalchemy 高级查询15.Fetch API 与后端交互一、django自定义命令
在 Django 中,自定义管理命令可以帮助你扩展 manage.py
命令的功能。
可以创建自己的命令来执行项目特定的任务,如初始化、清理数据库、发送批量电子邮件、调试帮助工具。
1、创建管理命令目录
在 Django 应用程序中创建一个名为 management
的目录,然后在其中创建一个 commands
目录。整个目录结构如下:
1 2 3 4 5 6 | your_app / management / __init__.py commands / __init__.py your_command.py |
2、创建自定义命令文件
在 commands
目录中添加一个 Python 文件,这个文件名将成为你的命令名。例如,your_command.py
文件将创建一个名为 your_command
的命令。
3、编写命令逻辑
在 your_command.py
中,编写自定义命令的逻辑。你需要继承 BaseCommand
类,并实现 handle
方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | from django.core.management.base import BaseCommand, CommandError class Command(BaseCommand): help = '描述这个命令的功能' def add_arguments( self , parser): # 如果需要参数,可以在这里定义 parser.add_argument( 'argument_name' , type = str , help = '描述这个参数的功能' ) def handle( self , * args, * * options): # 取得参数的值 argument_value = options[ 'argument_name' ] # 执行命令逻辑 self .stdout.write( self .style.SUCCESS(f '成功执行命令,参数值为:{argument_value}' )) |
4、运行自定义命令
启动你的 Django 项目并运行自定义命令
1 | python manage.py your_command <argument> |
在这里,<argument>
是通过 add_arguments
方法定义的参数。
注意:
- 帮助文本:
help
属性为你的命令提供简单的描述。当运行python manage.py help your_command
时,会显示这些帮助信息。 - 错误处理:可以通过抛出
CommandError
来优雅地处理错误。 - 日志输出:使用
self.stdout.write
和self.stderr.write
来输出普通消息和错误消息。
二、flask自定义命令click
1、使用 @app.cli.command()
装饰器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | from flask import Flask import click app = Flask(__name__) app.debug = True ## 2 自定制名 @app .cli.command( "create-user" ) @click .argument( "username" ) def create_user(username): """ 该命令用于创建一个用户,参数跟上用户名,如:\n flask --app CustomCommand.py:app create-user zjz """ click.echo( '打印传入用户的名字...' ) print (f "User name is: {username}" ) @app .route( '/' ) def index(): return 'index' if __name__ = = '__main__' : app.run(port = 8888 ) |
注:
1.1、""" """ 三引号里面的内容用户--help 提示消息
flask --app CustomCommand.py:app create-user --help
1 2 3 4 5 6 7 8 | Usage: flask create - user [OPTIONS] USERNAME 该命令用于创建一个用户,参数跟上用户名,如: flask - - app CustomCommand.py:app create - user zjz Options: - - help Show this message and exit. |
1.2、解释
- **@app.cli.command("create-user")**:注册一个名为
create-user
的命令。 - **@click.argument("name")**:定义这个命令需要一个位置参数
name
。 - Docstring:在函数
create_user
的顶部,提供一个简洁的描述,Click 将使用这段文字作为--help
输出中的说明部分。 - click.echo:用来替代
print
,这是因为click.echo
可以处理更多复杂的格式输出,更适合 CLI 环境下的字符输出。
1.3、创建多条自定义命令
1 2 3 4 5 6 7 8 9 10 | # 继续加装饰器和函数,如: @app .cli.command( "delete-user" ) @click .argument( "username" ) def delete_user(username): """ This command is used to delete a user. Usage: flask --app CustomCommand.py:app delete-user <username> """ click.echo( 'Deleting user...' ) print (f "User deleted with name: {username}" ) |
2、命令行缩写形式
当要执行的文件名为app时候可以缩写成
1 | flask create - user - - help |
3、以蓝图注册定制命令
1 2 3 4 5 6 7 8 9 10 | from flask import Blueprint bp = Blueprint( 'students' , __name__) @bp .cli.command( 'create' ) @click .argument( 'name' ) def create(name): ... app.register_blueprint(bp) |
以蓝图名执行命令
1 | flask students create alice |