Автономный Django ORM - настройки по умолчанию не распознаны

У меня есть типичное веб-приложение Django. Я хочу создать отдельный проект со своим собственным virtualenv и использовать ORM для создания новых записей в БД.

Существует множество ресурсов, объясняющих, как это сделать, включая эту статью из документации. Поэтому я написал сценарий следующим образом:

# Add Django project directory to path, so that I can
# import the models
import sys
sys.path.append("/path/to/django/project")

# Import my settings file from the Django project
from django_proj import settings as django_settings

import django
from django.conf import settings
if not settings.configured:
    settings.configure(django_settings)
django.setup()

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

AttributeError: 'module' object has no attribute 'LOGGING_CONFIG'

Я считаю, что это связано с тем, что я не указываю LOGGING_CONFIG явно в моих настройках. Я полагаюсь на значение по умолчанию.

Моя конфигурация четко работает, когда я запускаю ее через python manage.py, В чем проблема с этой дополнительной настройкой, которая вызывает проблемы?

Спасибо!

2 ответа

Решение

Пытаться:

import os
import sys
import django
sys.path.append('/path/to/django_project')
#from django_project import *
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django_project.settings')
django.setup()

Это сработало для меня. Надеюсь, поможет

Когда ты сказал

settings.configure(django_settings)

это так же, как

settings.configure(default_settings=django_settings)

так что вы говорите Django использовать django_settings по умолчанию, вместо django.conf.global_settings, Документы Django говорят, что вам обычно не нужно делать это, и в вашем случае это вызывает ошибки, потому что вы не установили значение по умолчанию для LOGGING,

Самый простой способ настроить ваш скрипт для использования ваших настроек со значениями по умолчанию в Django - это установить переменную окружения, как в ответе @BigZ.

Другие вопросы по тегам