2010-04-27 17 views

Respuesta

11

Es posible. Django es bastante bueno en ser pitón recto sin mucha magia, por lo que generalmente puedes desacoplar las cosas. Las vistas son solo funciones y se pueden invocar desde cualquier otro código python.

Para usar el ORM, deberá configurar el entorno django en su secuencia de comandos. En cuanto a un archivo "manage.py" muestra cómo hacer esto:

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

Ahora, puede llamar a cualquier vista que desee:

from myapp.views import some_view 

some_view(...) 

Tenga en cuenta que la convención es para funciones de vista de tomar un objeto HttpRequest como primer parámetro y devolver un objeto HttpResponse. Se puede construir una solicitud objeto mismo:

from django.http import HttpRequest 

result = some_view(HttpRequest(), ...) 

Pero si realmente no está interesado en usar HttpResponse o HttpRequest objetos, tal vez debería simplemente no llamar a sus métodos de "vistas". Tal vez son "utils" u otra cosa. Django no hace cumplir nada de esto, pero es una buena forma seguir una convención así para que otros programadores puedan leer tu código.

Editar: 24/05/2010: Arreglado "setup_environ" (erróneamente tenía "execute_manager" anteriormente). Reference.

+2

Esto es tan útil. Gracias. Realmente debería incluirse en el libro de Django o algo similar. He estado tratando de descubrir cómo aprovechar la API de modelos para cargar algunos datos en el DB fácilmente, y esto es exactamente lo que necesitaba. Gracias de nuevo. – CMaury

+0

Hola, estoy teniendo el error: 'desde django.core.management import setup_environ ImportError: no puedo importar el nombre setup_environ' – jeff

1

En Django 1.6, esto puede hacerse simplemente poniendo el directorio del proyecto en el camino, a continuación, establezca la variable de entorno DJANGO_SETTINGS_MODULE como se muestra abajo:

import sys 
import os 

sys.path.append(path_to_the_project_dir) 
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'projectname.settings') 

A continuación, puede empezar a importar sus modelos.

0

En Django 1.7, también tiene que hacer:

import sys 
import os 

sys.path.append(path_to_the_project_dir) 
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'projectname.settings') 

import django 
django.setup() 

De lo contrario, se llegará a una excepción AppRegistryNotReady.

Cuestiones relacionadas