Сценарии Джанго - PullRequest
       1

Сценарии Джанго

2 голосов
/ 12 июля 2010

Каков наилучший способ написания скрипта Python (не для запуска в серверном приложении Django), использующего настройки, модели, утилиты и т. Д. Django и, следовательно, возможность работать с базой данных приложения, скажем, с помощью пакетного процесса

EDIT

Мне нужно использовать это на другом сервере для выполнения довольно сложных операций с базой данных, поэтому такие решения, как пользовательские команды AppCommands или вызов страницы Djando, на самом деле не будут работать

Спасибо

Ответы [ 3 ]

6 голосов
/ 12 июля 2010

Один из способов сделать это - создать собственную команду управления . Тогда вы можете сделать что-то подобное, например, из Ваш crontab:

python manage.py my_command

Другой способ - убедиться, что Django, ваш проект Django и, при необходимости, сторонние приложения находятся на вашей PYTHONPATH. Затем вы можете получить доступ к базе данных и ORM, используя несколько строк кода:

from django.core.management import setup_environ
from my_project import settings
setup_environ(settings)

Теперь вы можете, например, делай так:

from my_app.models import MyModel
all_objects = MyModel.objects.all()
2 голосов
/ 08 мая 2014

setup_environ устарело с версии 1.4.Вы можете использовать этот способ:

import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'yoursite.settings'
import django
django.setup()

Тогда вы можете использовать свои модели.

from my_app.models import MyModel
all_objects = MyModel.objects.all()
0 голосов
/ 12 июля 2010

Я бы посмотрел на создание пользовательской команды администратора. Документацию для пользовательских команд AppCommands Django можно найти здесь: http://docs.djangoproject.com/en/dev/howto/custom-management-commands/

Обратите внимание, что это относится к Django 1.2 и выше.

После создания команду приложения (предположим, что она была сохранена в myApp / management / commands / example.py) можно запустить, вызвав

manage.py example
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...