Django笔记四十之运行Django环境的python脚本
创始人
2025-06-01 13:51:57
0

这一篇笔记介绍如何在 Django 中运行脚本。

假设说我们要实现一个功能,需要获取 blog.models.Blog 这张表里的总数且使用 print() 输出。

如果代码逻辑很短,且是一次性执行的操作,我们可以在系统的根目录下使用 python3 manage.py shell 在 shell 中操作实现。

from blog.models import Blog
print(Blog.objects.all().count())

但是如果这个需求是一个很长的逻辑,且需要可以重复执行,那么应该如何操作呢?

首先,我们需要可以用到 Django 里的 Blog model,然后使用 model 的方式来进行查询。

我们可以将其写入一个文件,每次都使用 shell 来调用。

写入文件,在 shell 调用

比如,我们可以在 blog 创建一个 scripts 文件夹,然后创建一个 blog_script.py 文件:

# blog/scripts/blog_script.pyfrom blog.models import Blogdef get_blog_count():print(Blog.objects.all().count())

然后每次调用的时候就进入 python3 manage.py shell 操作:

from blog.scripts.blog_script import get_blog_countget_blog_count()

直接运行脚本

如果我们想创建一个文件,然后直接运行该脚本,那么就需要在脚本中引入当前 Django 系统环境的一些参数和变量,可以直接在系统根目录下创建一个 blog_script.py 文件:

# blog_script.pyimport django, osos.environ.setdefault("DJANGO_SETTINGS_MODULE", "hunter.settings")
django.setup()from blog.models import Blogif __name__ == "__main__":print(Blog.objects.count())

然后我们在系统根目录下直接执行该脚本:

python3 blog_script.py

这个文件目前只有放在系统的根目录下才可以运行,但是如果太多的脚本都放到系统根目录下也不太好,所以我们如果有这种脚本一般都可以放到对应的 application 的 scripts 文件夹下。

如果我们想要直接在 blog/scripts/ 下直接运行该脚本的话,则需要在我们的脚本中添加 Django 系统的路径,假设我们的 Django 系统名为 hunter,在服务器的路径为:/Users/xxxx/hunter/,我们可以如下操作:

# blog/scripts/import django, os, sysdjango_path = "/Users/xxxx/hunter/"
sys.path.extend([django_path])
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hunter.settings")django.setup()from blog.models import Blogif __name__ == "__main__":print(Blog.objects.count())

原文链接:Django笔记四十之运行Django环境的python脚本

相关内容

热门资讯

创业板指涨超1%,宁德时代涨4... 11月13日消息,指数探底回升,创业板指拉升涨逾1%,上午一度跌近2%;沪指现涨0.52%,深成指涨...
海南推进全岛封关准备工作专班第... 11月13日消息,据海南自贸港消息,11月12日,推进全岛封关准备工作专班第18次领导小组会议在海口...
小米布局AI眼镜:与歌尔股份合... 11月13日消息,据报道,小米计划推出新一代AI眼镜,并已与歌尔股份合作,预计于2025年Q2发布。...
国产GPU公司摩尔线程正式办理... 11月13日消息,中国证监会官网显示,国产GPU公司摩尔线程智能科技(北京)股份有限公司在北京证监局...
航展带动,珠海六天机票预订量超... 11月13日消息,航旅纵横大数据显示,截至11月11日,11月12日—11月17日前往珠海的机票预订...
无地自容!公开喊冤刚半个月,证... 打脸来得太快,让人无地自容!近日,上市公司贵州百灵实控人姜伟收到证监会出局的行政处罚告知书,因涉嫌组...
54岁芦苇擢升履新!“老中信”... 出品|达摩财经12月23日,中国邮政集团官网发布消息显示,集团召开党组会议,宣布了中共中央组织部关于...
亿纬锂能双线出击:钠电补位锂电... 近日,广东惠州仲恺高新区,亿纬锂能惠州总部D区的一块空地上,铲车启动的轰鸣声宣告了“亿纬钠能总部和金...
IPO观察|龙旗科技15个月完... 红星资本局12月23日消息 日前,龙旗科技(603341.SH)公告H股发行进展,香港联交所上市委员...
国民养老再引4家地方国资股东入... 专为保险业 打造的垂直新媒体平台继引入外资股东后,“不差钱”的国民养老保险股份有限公司(下称“国民养...