¿Es posible ejecutar un archivo de vista usando el modelo y el formulario Django fuera del entorno de Django?¿Cómo usar modelos y formularios fuera de Django?
Respuesta
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.
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
Hola, estoy teniendo el error: 'desde django.core.management import setup_environ ImportError: no puedo importar el nombre setup_environ' – jeff
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.
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
.
- 1. Django: combinación de formularios para modelos relacionados
- 2. Django: utilizando ForeignKeyRawIdWidget fuera de los formularios de administración
- 3. ASP.NET MVC - Múltiples modelos en carpetas de formularios y modelos
- 4. Neo4j y django modelos
- 5. Django: varios modelos en una plantilla usando formularios
- 6. modelos de Django y Python
- 7. ¿Cómo usar Pyramid i18n fuera de vistas y plantillas?
- 8. ¿Usar modelos django en todas las aplicaciones?
- 9. ¿Cómo eliminar modelos de django?
- 10. Django, Modelos y Formularios: reemplace el mensaje "Este campo es obligatorio"
- 11. ¿Cómo usar dos Formularios Django diferentes en la misma plantilla?
- 12. ¿Cómo funcionan los modelos Django?
- 13. modelos de Django y Python propiedades
- 14. Formularios Django - ¿Cómo no validar?
- 15. Modelos anidados, formularios y fecha_selección Integración de FormHelper
- 16. Guardando formularios anidados en Django
- 17. Django uno a muchos formularios
- 18. Django - Manejo de "modelos enum"
- 19. Django y formularios vacíos son válidos
- 20. Cómo subir archivos múltiples en los modelos django admin
- 21. Formularios Django necesarios
- 22. modelos de Django evitar duplicados
- 23. modelos de Django importaciones recursivas - cómo resolver
- 24. Modelos Django con relaciones OneToOne?
- 25. formas de Django: forma más DRY para organizar crear formularios/actualización para los modelos heredados
- 26. Django modelos, funciones personalizadas
- 27. Django fábrica de formularios múltiples
- 28. get_models Django con modelos/__ init.py__
- 29. Django CSRF Token sin formularios
- 30. Uso de formularios de Django para mostrar y editar?
¿Desea utilizar las vistas, el ORM y el marco de formularios? ¿Por qué no utilizar todo Django? –
@Dominic porque no quiero tener que devolver HttpResponses – RadiantHex
¿Qué desea devolver? – Puddingfox