Fixed #19749 -- Documented ending param to command's self.stdout/err

Thanks xian at mintchaos.com for the report.
This commit is contained in:
Claude Paroz 2013-02-09 10:17:26 +01:00
parent f44922c795
commit 0201b9d6d8
2 changed files with 12 additions and 1 deletions

View File

@ -65,12 +65,18 @@ look like this:
self.stdout.write('Successfully closed poll "%s"' % poll_id) self.stdout.write('Successfully closed poll "%s"' % poll_id)
.. _management-commands-output:
.. note:: .. note::
When you are using management commands and wish to provide console When you are using management commands and wish to provide console
output, you should write to ``self.stdout`` and ``self.stderr``, output, you should write to ``self.stdout`` and ``self.stderr``,
instead of printing to ``stdout`` and ``stderr`` directly. By instead of printing to ``stdout`` and ``stderr`` directly. By
using these proxies, it becomes much easier to test your custom using these proxies, it becomes much easier to test your custom
command. command. Note also that you don't need to end messages with a newline
character, it will be added automatically, unless you specify the ``ending``
parameter::
self.stdout.write("Unterminated line", ending='')
The new custom command can be called using ``python manage.py closepoll The new custom command can be called using ``python manage.py closepoll
<poll_id>``. <poll_id>``.

View File

@ -253,6 +253,11 @@ Django 1.5 also includes several smaller improvements worth noting:
from :ref:`call_command <call-command>`. Any exception raised by the command from :ref:`call_command <call-command>`. Any exception raised by the command
(mostly :ref:`CommandError <ref-command-exceptions>`) is propagated. (mostly :ref:`CommandError <ref-command-exceptions>`) is propagated.
Moreover, when you output errors or messages in your custom commands, you
should now use ``self.stdout.write('message')`` and
``self.stderr.write('error')`` (see the note on
:ref:`management commands output <management-commands-output>`).
* The dumpdata management command outputs one row at a time, preventing * The dumpdata management command outputs one row at a time, preventing
out-of-memory errors when dumping large datasets. out-of-memory errors when dumping large datasets.