[英]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.