2010-04-27 18 views

risposta

11

È possibile. Django è abbastanza bravo a essere un vero pitone senza molta magia, quindi di solito puoi disaccoppiare le cose. Le viste sono solo funzioni e possono essere chiamate da qualsiasi altro codice Python.

Per utilizzare l'ORM, è necessario configurare l'ambiente django nel proprio script. Guardando un file "manage.py" mostra come fare questo:

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

Ora, è possibile chiamare qualunque cosa vista che si desidera:

from myapp.views import some_view 

some_view(...) 

Tenete a mente che la convenzione è per le funzioni di visualizzazione per prendere un oggetto HttpRequest come primo parametro e restituire un oggetto HttpResponse. Si potrebbe costruire una richiesta di oggetto da soli:

from django.http import HttpRequest 

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

Ma se proprio non siete interessati a utilizzare HttpResponse o HttpRequest oggetti, forse si dovrebbe semplicemente non chiamare i tuoi metodi "views". Forse sono "utils" o qualcos'altro. Niente di tutto questo è applicato da Django, ma è buona norma seguire una convenzione del genere in modo che altri programmatori possano leggere il tuo codice.

Modifica: 2010-05-24: Risolto "setup_environ" (erroneamente aveva "execute_manager" in precedenza). Reference.

+2

Questo è molto utile. Grazie. Dovrebbe essere davvero incluso nel libro di Django o qualcosa di simile. Ho cercato di capire come sfruttare l'API dei modelli per caricare facilmente alcuni dati nel DB e questo è esattamente ciò di cui avevo bisogno. Grazie ancora. – CMaury

+0

Ciao, sto avendo l'errore: 'da django.core.management import setup_environ ImportError: impossibile importare il nome setup_environ' – jeff

1

In Django 1.6, questo può essere fatto semplicemente inserendo la directory del progetto nel percorso, quindi impostare la variabile d'ambiente DJANGO_SETTINGS_MODULE come illustrato di seguito:

import sys 
import os 

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

Quindi, è possibile avviare l'importazione dei modelli.

0

In Django 1.7, è inoltre necessario fare:

import sys 
import os 

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

import django 
django.setup() 

In caso contrario, vi ha colpito un'eccezione AppRegistryNotReady.

Problemi correlati