これは、コマンド ラインから django を実行するための標準的なラッパーです。これは、実行したい cron スクリプトがある場合にも役立ちます。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os, sys
# If this script lives in a child directory of the main project directory
# uncomment the following 2 lines:
#dir_parent = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
#sys.path.insert(0, dir_parent)
from django.core.management import setup_environ
import settings
setup_environ(settings)
from django.db import transaction
# import whatever you like from app.models or whatever
# do random stuff.
# If you are *changing* database records,
# wrap your database code either in:
@transaction.commit_manually
def foo():
... stuff
transaction.commit()
# OR end you script with:
transaction.commit_unless_managed()
コメントの更新:
上記の変数は ではなくfile
、そうです__file__
(つまり、2 つのアンダースコアfile
とさらに 2 つのアンダースコア)。これは常に、Python インタープリターによって、それが発生するファイルのフルパスに設定されます。コメントにあるように、このスクリプトがメインディレクトリの子ディレクトリにある場合、ファイル名のディレクトリのディレクトリはあなたに与えますメイン プロジェクト ディレクトリのディレクトリ名を追加するとsys.path
、すべてのインポートが正しく機能することが保証されます。スクリプトがメイン ディレクトリにあり、そこから実行する場合は、その必要はありません。