使用 Django 開發網頁時,會把使用的 APP 與一些設定寫在 setting.py 這個設定檔內,程式執行的時候,會 import 設定檔內的東西。但如果寫了一隻不在 Django 專案裡的 Python Script,卻想要呼叫 Django 裡面的 module 時,就要自己做 import 的動作拉!
比如說我的 Django 目錄長這樣
Django_project/ | |─ virtualenv/ |─ project/ |─ python_script.py
那麼外部的程式 python_script.py 就需要做以下的 import
sys.path.append(os.path.join(os.path.dirname(__file__), ‘project’))
os.environ.setdefault(“DJANGO_SETTINGS_MODULE”, “project.settings”)
from django.conf import settings
再舉個例子,筆者使用 Django Mail Queue 這個套件來寄信,信件的產生由一隻外部的程式在背景執行,因此除了要引入 django setting 外,還要將相關的 model 引入
import sys, os
sys.path.append(os.path.join(os.path.dirname(__file__), ‘project’))
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")
from django.conf
import settings
from mailqueue.models
import MailerMessage
new_message = MailerMessage()
new_message.subject = "My Subject"
new_message.to_address = "example@gmail.com"
new_message.from_address = "example@gmail.com"
new_message.content = "Mail content"
new_message.html_content = "<h1>Mail Content</h1>"
new_message.app = "Name of your App that is sending the email."
new_message.save()