È possibile eseguire un file di visualizzazione utilizzando Django Model e Form al di fuori dell'ambiente Django?Utilizzo di modelli e moduli al di fuori di Django?
risposta
È 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.
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
Ciao, sto avendo l'errore: 'da django.core.management import setup_environ ImportError: impossibile importare il nome setup_environ' – jeff
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.
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
.
- 1. Django umanizza al di fuori del modello?
- 2. Definizioni di modelli al di fuori del corpo della classe
- 3. Django: utilizzo di ForeignKeyRawIdWidget all'esterno dei moduli di amministrazione
- 4. Utilizzo delle variabili di visualizzazione di Django all'interno dei modelli
- 5. Vele js utilizzando modelli al di fuori del server web
- 6. Cartelle di modelli Django
- 7. Come utilizzare Pyramid i18n al di fuori di visualizzazioni e modelli?
- 8. Modelli di design Django - Moduli per creare e aggiornare un modello
- 9. Scrittura di campi e widget di moduli personalizzati di Django
- 10. sovrascrivendo modelli predefiniti di django-allauth
- 11. come fare riferimento a segnali al di fuori di models.py
- 12. Modelli e spazi Django
- 13. Caricamento di Ajango Ajax al di fuori di un modulo
- 14. Elenco di modelli annidati in moduli backbone
- 15. Macro in modelli di Django
- 16. Django: più modelli in un modello utilizzando i moduli
- 17. Sfinge - Documentazione di modelli Django
- 18. Utilizzo di django-nose e django-sedano insieme - unit test
- 19. Django: con la modifica blocchi di fuori
- 20. Salvataggio di moduli nidificati in Django
- 21. Utilizzo di modelli di giada in Backbone.js
- 22. Definizione di modelli di Django che ordinano
- 23. Aggiornamento di modelli complessi in scenari di registrazione di moduli e MVC
- 24. Utilizzo di moduli dominio autenticazione tra
- 25. Utilizzo di Spring Validator al di fuori del contesto di Spring MVC
- 26. Moq Esempio di utilizzo fuori e ref necessaria
- 27. modelli Django e Python attribuisce
- 28. Utilizzo di SQLAlchemy e Django ORM sullo stesso database
- 29. modelli Django e Python proprietà
- 30. Sovrascrivi modelli di app esterna in Django
Si desidera utilizzare le viste, l'ORM e il framework dei moduli: perché non utilizzare tutto il Django? –
@Dominic perché non voglio dover restituire HttpResponses – RadiantHex
Cosa vuoi restituire? – Puddingfox