django、flask自定义命令

一、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

  

 

posted @   凡人半睁眼  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示