2016-03-21 5 views
0

У меня есть тестовый сценарий:Невозможно импортировать django.apps в сценарии

#!/usr/bin/env python 
# coding: utf-8 

import os, sys, subprocess, time, re 
from django.conf import settings 
from django.apps import apps 
import django 

django.setup() 

""" 
http://stackoverflow.com/questions/24027901/dynamically-loading-django-apps-at-runtime 
""" 

MAIN_IMPORTS = """\ 
from django.test import TestCase 
from model_mommy import mommy 

""" 

IMPORT_STATEMENT = """\ 
from clientsite.{app}.models import {models} 
""" 

TEST_BLOCK = """\ 
class {modelname}CreationTests(TestCase): 
    def setUp(self): 
     self.model = {modelname} 

    def test_create(self): 
     x = mommy.make(self.model) 
     x.save() 
     self.assertTrue(x.pk) 

    def test_factory_isinstance(self): 
     x = mommy.make(self.model) 
     self.assertTrue(isinstance(x, {modelname})) 
""" 

all_apps = apps.get_apps() 
all_models = apps.get_models() 
model_info = apps.all_models 

Я хочу, чтобы иметь возможность использовать django.apps в моем сценарии. Сценарий в приложение, как mysite/mommy_app/scripts/testtasm.py

Я попытался

cchilders:~/work_projects/mysite [ckc/fixture-replacements]$ ./manage.py mysite/mommy_models/scripts/testtasm.py 
Unknown command: 'mysite/mommy_models/scripts/testtasm.py' 

и не удалось.

django.setup() также не удалось.

Как я могу использовать функции django в скрипте без фактически запускаемого сервера? Спасибо.

+0

Вы пытались запустить его как обычный скрипт python? – rnevius

ответ

0

Вы не должны использовать manage.py для запуска сценария, если вы не создали custom management command

Вы должны запустить скрипт с

python mysite/mommy_models/scripts/testtasm.py 

Или, если сценарий является исполняемым

mysite/mommy_models/scripts/testtasm.py 

В сценарии перед вызовом django.setup вы должны установить переменную среды DJANGO_SETTINGS_MODULE. Вам также может потребоваться добавить каталог проекта в путь Python.

import os 
import sys 
# This should be the directory that contains the directory containing settings.py 
sys.path.add('/path/to/mysite') 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") 

django.setup() 

# now you can import the settings and access them 
from django.conf import settings 
Смежные вопросы