繁体   English   中英

我如何在 django 中运行脚本?

[英]how do i run a Script inside django?

 C:\Users\Qasim\Desktop\translator>python manage.py runscript text No (valid) module for script 'text' found Try running with a higher verbosity level like: -v2 or -v3 C:\Users\Qasim\Desktop\translator>python manage.py runscript text -v2 Check for django.contrib.admin.scripts.text Check for django.contrib.auth.scripts.text Check for django.contrib.contenttypes.scripts.text Check for django.contrib.sessions.scripts.text Check for django.contrib.messages.scripts.text Check for django.contrib.staticfiles.scripts.text Check for news.scripts.text Check for rest_framework.scripts.text Check for django_extensions.scripts.text Check for scripts.text No (valid) module for script 'text' found

#text.py
from news.models import News

def run():
    #all news
    deleteAll = News.objects.all()

    #delete all news
    deleteAll.delete()

对于这样的事情,我建议创建一个自定义管理命令。 这将允许您像您尝试的那样使用manage.py <command name>运行代码。

文档位于https://docs.djangoproject.com/en/3.0/howto/custom-management-commands/

因此,您首先要在应用程序的目录中添加一个management文件夹,然后在management文件夹中添加一个commands文件夹。

在 commands 文件夹中为您的命令创建一个文件 - 类似于delete_all_news.py 您将使用文件名(不带.py扩展名)运行命令 - 因此,如果您将文件命名为delete_my_stuff.py ,您将使用manage.py delete_my_stuff运行它。 不要以下划线开头文件名,否则您将无法从命令行运行它(您可以将这些文件用于支持您不想充当实际命令的文件 - 在您的情况下不是必需的)。

该文件的内容可能类似于下面的内容(显然在生产中您需要异常处理和某种通知/日志记录命令成功或失败)

新闻/管理/命令/delete_all_news.py

from django.core.management.base import BaseCommand, CommandError
from news.models import News


class Command(BaseCommand):
    help = 'Delete all news items from database'

    def handle(self, *args, **options):
        News.objects.all().delete()

然后从命令行运行manage.py delete_all_news

另请注意,您可以将delete()调用链接到objects过滤器 - 无需将objects.all()读入变量然后执行删除,如果您愿意,可以在一个语句中完成所有操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM