Вот моя стандартная оболочка для запуска Джанго материал из командной строки. Это также полезно, если у вас есть сценарии 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
убедитесь, что все ваши импортные работы работают правильно. Если сценарий живет в главной директории, и вы ее выполняете оттуда, тогда вам не нужно это делать.
Вы пытались импортировать заполнение из оболочки django? импортировать; populate.main() или что-то в этом роде ... – vasek1