本文首發於公眾號:Hunter後端 原文鏈接:Django筆記四十之運行Django環境的python腳本 這一篇筆記介紹如何在 Django 中運行腳本。 假設說我們要實現一個功能,需要獲取 blog.models.Blog 這張表裡的總數且使用 print() 輸出。 如果代碼邏輯很短,且是一次 ...
本文首發於公眾號:Hunter後端
這一篇筆記介紹如何在 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())
如果想獲取更多後端相關文章,可掃碼關註閱讀: