⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

Django管理命令

编写自定义manage.py命令,实现后台任务自动化。 · 难度:入门 · +15XP

管理命令概述

Django的管理命令是通过manage.py调用的Python脚本。你可以编写自定义命令来执行数据迁移、清理过期数据、发送通知等后台任务。

目录结构

在app目录下创建management/commands/文件夹,注意每个目录下都需要__init__.py文件。

myapp/
    management/
        __init__.py
        commands/
            __init__.py
            my_command.py

编写命令

from django.core.management.base import BaseCommand
from myapp.models import Article

class Command(BaseCommand):
    help = '清理过期的文章'

    def add_arguments(self, parser):
        parser.add_argument('--days', type=int, default=30,
                            help='删除多少天前的文章')

    def handle(self, *args, **options):
        days = options['days']
        from datetime import datetime, timedelta
        cutoff = datetime.now() - timedelta(days=days)
        deleted_count = Article.objects.filter(created_at__lt=cutoff).delete()[0]
        self.stdout.write(self.style.SUCCESS(f'成功删除 {deleted_count} 篇文章'))

运行命令

python manage.py my_command --days 60
方法用途
add_arguments定义命令行参数
handle核心业务逻辑
self.stdout.write输出信息到控制台
self.style.SUCCESS带颜色的成功提示

练习提示: 补全starter_code中的命令类,使其能接受--status参数,并打印所有状态为'published'的文章标题。

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 189 篇
0 完成
🔥 0