Подтвердить что ты не робот

Использовать django: от "python manage.py shell" до python script

Я могу перейти в каталог проекта python (скажем c:\www\myproject), а затем выпустить

   python manage.py shell

а затем я могу использовать все модули из проекта django, скажем, следующую команду команд из команды оболочки:

import settings 
from django.template import Template, Context

t=Template("My name is {myname}.")
c=Context({"myname":"John"})
f = open('write_test.txt', 'w')
f.write(t.render(c))
f.close

теперь, когда я попытался собрать все мои команды в python script, скажем, "mytest.py", я не могу выполнить script. Я должен пропустить что-то важное.

Я выпустил python mytest.py

тогда я получил Import error: could not import settings Является ли это на пути sys? "

Я в каталоге проекта, где settings.py находится.....

Может кто-нибудь помочь мне?

спасибо.

4b9b3361

Ответ 1

Попробуйте вместо команду управления Django.

# myproject/myapp/management/commands/my_command.py

from django.core.management.base import NoArgsCommand
from django.template import Template, Context
from django.conf import settings

class Command(NoArgsCommand):
    def handle_noargs(self, **options):
        t=Template("My name is {myname}.")
        c=Context({"myname":"John"})
        f = open('write_test.txt', 'w')
        f.write(t.render(c))
        f.close

И затем (если вы следуете документам) вы сможете выполнить команду следующим образом:

python manage.py my_command

Ответ 2

Этот метод устарел в Django 1.4. Вместо этого используйте django.conf.settings.configure()  (см. ответ @adiew, например, код).

Далее следует старый метод.

Поместите это в начало вашего script

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

Это действительно то, что делает manage.py за сценой. Чтобы увидеть его, посмотрите источник Django в django/core/management/__init__.py. После выполнения этих строк все должно быть как в ./manage.py shell.

Ответ 3

Попробуйте поместить эти две строки в начало вашего script:

from django.conf import settings
settings.configure() # check django source for more detail

# now you can import other django modules
from django.template import Template, Context

Ответ 5

Для импорта настроек Django используйте:

from django.conf import settings

Ответ 6

Вместо того, чтобы вручную добавлять вещи к вашему python script или соответствовать формату команды управления, в случае, если это не то, что нужно долгое время, вы можете получить все преимущества среды Django, выполнив ваш script с ./manage.py runscript <myscript.py>

... но если ваш script находится в папке проекта, вы можете просто добавить эту строку в начало python script: import os; os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

Ответ 7

Выделите fooobar.com/questions/44105/... хорошее решение для Django >= 1.7, и если кто-то использует django-конфигурации это сработало для меня:

import sys, os, django

sys.path.append('/path/to/project')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.local") # path to config

## if using django-configurations
os.environ.setdefault("DJANGO_CONFIGURATION", "Local")
from configurations import importer
importer.install()

django.setup() ## apparently important for django 1.7

from foo.models import Bar

print Bar.objects.all()

Ответ 8

Вот еще один вариант: я написал и часто использую команду управления "run", которая имеет то преимущество, что скрипты могут видеть их параметры командной строки:

http://lino-framework.org/api/lino.management.commands.run.html