2011-06-06 13 views
29

Tengo un comando de administración personalizado que envía informes por correo electrónico. Normalmente se ejecuta desde un trabajo cron. Lo que me gustaría hacer es agregar un botón a mi aplicación web que, al hacer clic, haga que el comando admin se ejecute allí y luego en lugar de esperar a que el trabajo cron lo llame. ¿Cómo hago esto? ¿Tengo que llamar a una línea de comando comoEjecutar comando de administración personalizada desde la vista

python manage.py myadmincmd 

o puedo invocar el código desde un punto de vista? Parece que sería más limpio si pudiera hacer esto desde una vista sin necesidad de acceder a la línea de comando.

+2

Como Daniel dice que se puede usar 'call_command' o estructurar su código para que tanto el comando de gestión y la vista llaman una tercera función que realmente hace el envío de correo. –

+1

posible duplicado de [¿Cómo puedo llamar a un comando personalizado Django manage.py directamente desde un controlador de prueba?] (Http://stackoverflow.com/questions/907506/how-can-i-call-a-custom-django- manage-py-command-directamente-from-a-test-driver) – ChillarAnand

Respuesta

43

Puede utilizar call_command:

from django.core.management import call_command 
call_command('myadmincmd') 
+1

podemos obtener la respuesta cron en la página web como viene a la consola al procesar el comando – PiyusG

+0

https://docs.djangoproject.com/en/1.11/ ref/django-admin/# running-management-commands-from-your-code –

Cuestiones relacionadas