tutorial runserver manage libro español ejemplos python django django-commands

python - runserver - libro django 2018



¿Pueden los comandos personalizados de Django manage.py devolver un valor? ¿Cómo, o por qué no? (1)

Si desea obtener la salida de call_command() , necesita capturar la salida call_command() . Así es como puedes hacerlo:

out = StringIO() call_command(''call_custom_command'', stdout=out) value = out.getvalue() print value

Esta técnica se usa realmente en las pruebas de django para probar los comandos de administración.

Manifestación:

>>> from django.core.management import call_command >>> from StringIO import StringIO >>> out = StringIO() >>> call_command(''validate'', stdout=out) >>> out.getvalue() ''0 errors found/n''

Espero que ayude.

Siguiendo la documentación: https://docs.djangoproject.com/en/dev/howto/custom-management-commands/

Creé mi propio comando personalizado (llamado otra cosa, pero el ejemplo se muestra a continuación):

from django.core.management.base import BaseCommand, CommandError from polls.models import Poll class Command(BaseCommand): args = ''<poll_id poll_id ...>'' help = ''Closes the specified poll for voting'' def handle(self, *args, **options): for poll_id in args: try: poll = Poll.objects.get(pk=int(poll_id)) except Poll.DoesNotExist: raise CommandError(''Poll "%s" does not exist'' % poll_id) poll.opened = False poll.save() self.stdout.write(''Successfully closed poll "%s"'' % poll_id) return "Yay"

La pregunta es, ¿cómo es que devolver una cadena como "Yay" no funciona? ¿Lo estoy haciendo mal o no es posible?

Cuando llamo el comando personalizado desde mi vista, hago algo como:

value = call_command(''call_custom_command'', parameter) print value

pero el valor se muestra como Ninguno.