乐趣区

关于python:Django笔记四十之运行Django环境的python脚本

这一篇笔记介绍如何在 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.py

from blog.models import Blog

def get_blog_count():
    print(Blog.objects.all().count())

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

from blog.scripts.blog_script import get_blog_count

get_blog_count()

间接运行脚本

如果咱们想创立一个文件,而后间接运行该脚本,那么就须要在脚本中引入以后 Django 零碎环境的一些参数和变量,能够间接在零碎根目录下创立一个 blog_script.py 文件:

# blog_script.py

import django, os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hunter.settings")
django.setup()

from blog.models import Blog

if __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, sys

django_path = "/Users/xxxx/hunter/"
sys.path.extend([django_path])
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hunter.settings")

django.setup()

from blog.models import Blog

if __name__ == "__main__":
    print(Blog.objects.count())

本文首发于微信公众号:【Hunter 后端】

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

如果想获取更多相干文章,可扫码关注浏览:

退出移动版