Fixed #24857 -- Added "python -m django" entry point.

This commit is contained in:
Ryan Hiebert 2015-04-30 10:54:45 -05:00 committed by Tim Graham
parent 1743efbe62
commit 617eff41ac
4 changed files with 28 additions and 1 deletions

9
django/__main__.py Normal file
View File

@ -0,0 +1,9 @@
"""
Invokes django-admin when the django module is run as a script.
Example: python -m django check
"""
from django.core import management
if __name__ == "__main__":
management.execute_from_command_line()

View File

@ -33,7 +33,12 @@ Django settings files, use ``django-admin`` with
option. option.
The command-line examples throughout this document use ``django-admin`` to The command-line examples throughout this document use ``django-admin`` to
be consistent, but any example can use ``manage.py`` just as well. be consistent, but any example can use ``manage.py`` or ``python -m django``
just as well.
.. versionadded:: 1.9
``python -m django`` was added.
Usage Usage
===== =====
@ -42,6 +47,7 @@ Usage
$ django-admin <command> [options] $ django-admin <command> [options]
$ manage.py <command> [options] $ manage.py <command> [options]
$ python -m django <command> [options]
``command`` should be one of the commands listed in this document. ``command`` should be one of the commands listed in this document.
``options``, which is optional, should be zero or more of the options available ``options``, which is optional, should be zero or more of the options available

View File

@ -415,6 +415,9 @@ Management Commands
to the database using the password from your settings file (instead of to the database using the password from your settings file (instead of
requiring it to be manually entered). requiring it to be manually entered).
* The ``django`` package may be run as a script, i.e. ``python -m django``,
which will behave the same as ``django-admin``.
Migrations Migrations
^^^^^^^^^^ ^^^^^^^^^^

View File

@ -2037,3 +2037,12 @@ class Dumpdata(AdminScriptTestCase):
out, err = self.run_manage(args) out, err = self.run_manage(args)
self.assertOutput(err, "You can only use --pks option with one model") self.assertOutput(err, "You can only use --pks option with one model")
self.assertNoOutput(out) self.assertNoOutput(out)
class MainModule(AdminScriptTestCase):
"""python -m django works like django-admin."""
def test_runs_django_admin(self):
cmd_out, _ = self.run_django_admin(['--version'])
mod_out, _ = self.run_test('-m', ['django', '--version'])
self.assertEqual(mod_out, cmd_out)