12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153 |
- ==================================
- ``django-admin`` and ``manage.py``
- ==================================
- ``django-admin`` is Django's command-line utility for administrative tasks.
- This document outlines all it can do.
- In addition, ``manage.py`` is automatically created in each Django project. It
- does the same thing as ``django-admin`` but also sets the
- :envvar:`DJANGO_SETTINGS_MODULE` environment variable so that it points to your
- project's ``settings.py`` file.
- The ``django-admin`` script should be on your system path if you installed
- Django via ``pip``. If it's not in your path, ensure you have your virtual
- environment activated.
- Generally, when working on a single Django project, it's easier to use
- ``manage.py`` than ``django-admin``. If you need to switch between multiple
- Django settings files, use ``django-admin`` with
- :envvar:`DJANGO_SETTINGS_MODULE` or the :option:`--settings` command line
- option.
- The command-line examples throughout this document use ``django-admin`` to
- be consistent, but any example can use ``manage.py`` or ``python -m django``
- just as well.
- Usage
- =====
- .. console::
- $ django-admin <command> [options]
- $ manage.py <command> [options]
- $ python -m django <command> [options]
- ``command`` should be one of the commands listed in this document.
- ``options``, which is optional, should be zero or more of the options available
- for the given command.
- Getting runtime help
- --------------------
- .. django-admin:: help
- Run ``django-admin help`` to display usage information and a list of the
- commands provided by each application.
- Run ``django-admin help --commands`` to display a list of all available
- commands.
- Run ``django-admin help <command>`` to display a description of the given
- command and a list of its available options.
- App names
- ---------
- Many commands take a list of "app names." An "app name" is the basename of
- the package containing your models. For example, if your :setting:`INSTALLED_APPS`
- contains the string ``'mysite.blog'``, the app name is ``blog``.
- Determining the version
- -----------------------
- .. django-admin:: version
- Run ``django-admin version`` to display the current Django version.
- The output follows the schema described in :pep:`440`:
- .. code-block:: text
- 1.4.dev17026
- 1.4a1
- 1.4
- Displaying debug output
- -----------------------
- .. program:: None
- Use :option:`--verbosity`, where it is supported, to specify the amount of
- notification and debug information that ``django-admin`` prints to the console.
- Available commands
- ==================
- ``check``
- ---------
- .. django-admin:: check [app_label [app_label ...]]
- Uses the :doc:`system check framework </ref/checks>` to inspect the entire
- Django project for common problems.
- By default, all apps will be checked. You can check a subset of apps by
- providing a list of app labels as arguments:
- .. console::
- django-admin check auth admin myapp
- .. django-admin-option:: --tag TAGS, -t TAGS
- The system check framework performs many different types of checks that are
- :ref:`categorized with tags <system-check-builtin-tags>`. You can use these
- tags to restrict the checks performed to just those in a particular category.
- For example, to perform only models and compatibility checks, run:
- .. console::
- django-admin check --tag models --tag compatibility
- .. django-admin-option:: --database DATABASE
- Specifies the database to run checks requiring database access:
- .. console::
- django-admin check --database default --database other
- By default, these checks will not be run.
- .. django-admin-option:: --list-tags
- Lists all available tags.
- .. django-admin-option:: --deploy
- Activates some additional checks that are only relevant in a deployment setting.
- You can use this option in your local development environment, but since your
- local development settings module may not have many of your production settings,
- you will probably want to point the ``check`` command at a different settings
- module, either by setting the :envvar:`DJANGO_SETTINGS_MODULE` environment
- variable, or by passing the ``--settings`` option:
- .. console::
- django-admin check --deploy --settings=production_settings
- Or you could run it directly on a production or staging deployment to verify
- that the correct settings are in use (omitting ``--settings``). You could even
- make it part of your integration test suite.
- .. django-admin-option:: --fail-level {CRITICAL,ERROR,WARNING,INFO,DEBUG}
- Specifies the message level that will cause the command to exit with a non-zero
- status. Default is ``ERROR``.
- ``compilemessages``
- -------------------
- .. django-admin:: compilemessages
- Compiles ``.po`` files created by :djadmin:`makemessages` to ``.mo`` files for
- use with the built-in gettext support. See :doc:`/topics/i18n/index`.
- .. django-admin-option:: --locale LOCALE, -l LOCALE
- Specifies the locale(s) to process. If not provided, all locales are processed.
- .. django-admin-option:: --exclude EXCLUDE, -x EXCLUDE
- Specifies the locale(s) to exclude from processing. If not provided, no locales
- are excluded.
- .. django-admin-option:: --use-fuzzy, -f
- Includes `fuzzy translations`_ into compiled files.
- Example usage:
- .. console::
- django-admin compilemessages --locale=pt_BR
- django-admin compilemessages --locale=pt_BR --locale=fr -f
- django-admin compilemessages -l pt_BR
- django-admin compilemessages -l pt_BR -l fr --use-fuzzy
- django-admin compilemessages --exclude=pt_BR
- django-admin compilemessages --exclude=pt_BR --exclude=fr
- django-admin compilemessages -x pt_BR
- django-admin compilemessages -x pt_BR -x fr
- .. _fuzzy translations: https://www.gnu.org/software/gettext/manual/html_node/Fuzzy-Entries.html
- .. django-admin-option:: --ignore PATTERN, -i PATTERN
- Ignores directories matching the given :mod:`glob`-style pattern. Use
- multiple times to ignore more.
- Example usage:
- .. console::
- django-admin compilemessages --ignore=cache --ignore=outdated/*/locale
- ``createcachetable``
- --------------------
- .. django-admin:: createcachetable
- Creates the cache tables for use with the database cache backend using the
- information from your settings file. See :doc:`/topics/cache` for more
- information.
- .. django-admin-option:: --database DATABASE
- Specifies the database in which the cache table(s) will be created. Defaults to
- ``default``.
- .. django-admin-option:: --dry-run
- Prints the SQL that would be run without actually running it, so you can
- customize it or use the migrations framework.
- ``dbshell``
- -----------
- .. django-admin:: dbshell
- Runs the command-line client for the database engine specified in your
- :setting:`ENGINE <DATABASE-ENGINE>` setting, with the connection parameters
- specified in your :setting:`USER`, :setting:`PASSWORD`, etc., settings.
- * For PostgreSQL, this runs the ``psql`` command-line client.
- * For MySQL, this runs the ``mysql`` command-line client.
- * For SQLite, this runs the ``sqlite3`` command-line client.
- * For Oracle, this runs the ``sqlplus`` command-line client.
- This command assumes the programs are on your ``PATH`` so that a call to
- the program name (``psql``, ``mysql``, ``sqlite3``, ``sqlplus``) will find the
- program in the right place. There's no way to specify the location of the
- program manually.
- .. django-admin-option:: --database DATABASE
- Specifies the database onto which to open a shell. Defaults to ``default``.
- .. django-admin-option:: -- ARGUMENTS
- Any arguments following a ``--`` divider will be passed on to the underlying
- command-line client. For example, with PostgreSQL you can use the ``psql``
- command's ``-c`` flag to execute a raw SQL query directly:
- .. console::
- $ django-admin dbshell -- -c 'select current_user'
- current_user
- --------------
- postgres
- (1 row)
- On MySQL/MariaDB, you can do this with the ``mysql`` command's ``-e`` flag:
- .. console::
- $ django-admin dbshell -- -e "select user()"
- +----------------------+
- | user() |
- +----------------------+
- | djangonaut@localhost |
- +----------------------+
- .. note::
- Be aware that not all options set in the :setting:`OPTIONS` part of your
- database configuration in :setting:`DATABASES` are passed to the
- command-line client, e.g. ``'isolation_level'``.
- ``diffsettings``
- ----------------
- .. django-admin:: diffsettings
- Displays differences between the current settings file and Django's default
- settings (or another settings file specified by :option:`--default`).
- Settings that don't appear in the defaults are followed by ``"###"``. For
- example, the default settings don't define :setting:`ROOT_URLCONF`, so
- :setting:`ROOT_URLCONF` is followed by ``"###"`` in the output of
- ``diffsettings``.
- .. django-admin-option:: --all
- Displays all settings, even if they have Django's default value. Such settings
- are prefixed by ``"###"``.
- .. django-admin-option:: --default MODULE
- The settings module to compare the current settings against. Leave empty to
- compare against Django's default settings.
- .. django-admin-option:: --output {hash,unified}
- Specifies the output format. Available values are ``hash`` and ``unified``.
- ``hash`` is the default mode that displays the output that's described above.
- ``unified`` displays the output similar to ``diff -u``. Default settings are
- prefixed with a minus sign, followed by the changed setting prefixed with a
- plus sign.
- ``dumpdata``
- ------------
- .. django-admin:: dumpdata [app_label[.ModelName] [app_label[.ModelName] ...]]
- Outputs to standard output all data in the database associated with the named
- application(s).
- If no application name is provided, all installed applications will be dumped.
- The output of ``dumpdata`` can be used as input for :djadmin:`loaddata`.
- When result of ``dumpdata`` is saved as a file, it can serve as a
- :ref:`fixture <fixtures-explanation>` for
- :ref:`tests <topics-testing-fixtures>` or as an
- :ref:`initial data <initial-data-via-fixtures>`.
- Note that ``dumpdata`` uses the default manager on the model for selecting the
- records to dump. If you're using a :ref:`custom manager <custom-managers>` as
- the default manager and it filters some of the available records, not all of the
- objects will be dumped.
- .. django-admin-option:: --all, -a
- Uses Django's base manager, dumping records which might otherwise be filtered
- or modified by a custom manager.
- .. django-admin-option:: --format FORMAT
- Specifies the serialization format of the output. Defaults to JSON. Supported
- formats are listed in :ref:`serialization-formats`.
- .. django-admin-option:: --indent INDENT
- Specifies the number of indentation spaces to use in the output. Defaults to
- ``None`` which displays all data on single line.
- .. django-admin-option:: --exclude EXCLUDE, -e EXCLUDE
- Prevents specific applications or models (specified in the form of
- ``app_label.ModelName``) from being dumped. If you specify a model name, then
- only that model will be excluded, rather than the entire application. You can
- also mix application names and model names.
- If you want to exclude multiple applications, pass ``--exclude`` more than
- once:
- .. console::
- django-admin dumpdata --exclude=auth --exclude=contenttypes
- .. django-admin-option:: --database DATABASE
- Specifies the database from which data will be dumped. Defaults to ``default``.
- .. django-admin-option:: --natural-foreign
- Uses the ``natural_key()`` model method to serialize any foreign key and
- many-to-many relationship to objects of the type that defines the method. If
- you're dumping ``contrib.auth`` ``Permission`` objects or
- ``contrib.contenttypes`` ``ContentType`` objects, you should probably use this
- flag. See the :ref:`natural keys <topics-serialization-natural-keys>`
- documentation for more details on this and the next option.
- .. django-admin-option:: --natural-primary
- Omits the primary key in the serialized data of this object since it can be
- calculated during deserialization.
- .. django-admin-option:: --pks PRIMARY_KEYS
- Outputs only the objects specified by a comma separated list of primary keys.
- This is only available when dumping one model. By default, all the records of
- the model are output.
- .. django-admin-option:: --output OUTPUT, -o OUTPUT
- Specifies a file to write the serialized data to. By default, the data goes to
- standard output.
- When this option is set and ``--verbosity`` is greater than 0 (the default), a
- progress bar is shown in the terminal.
- Fixtures compression
- ~~~~~~~~~~~~~~~~~~~~
- The output file can be compressed with one of the ``bz2``, ``gz``, ``lzma``, or
- ``xz`` formats by ending the filename with the corresponding extension.
- For example, to output the data as a compressed JSON file:
- .. console::
- django-admin dumpdata -o mydata.json.gz
- ``flush``
- ---------
- .. django-admin:: flush
- Removes all data from the database and re-executes any post-synchronization
- handlers. The table of which migrations have been applied is not cleared.
- If you would rather start from an empty database and rerun all migrations, you
- should drop and recreate the database and then run :djadmin:`migrate` instead.
- .. django-admin-option:: --noinput, --no-input
- Suppresses all user prompts.
- .. django-admin-option:: --database DATABASE
- Specifies the database to flush. Defaults to ``default``.
- ``inspectdb``
- -------------
- .. django-admin:: inspectdb [table [table ...]]
- Introspects the database tables in the database pointed-to by the
- :setting:`NAME` setting and outputs a Django model module (a ``models.py``
- file) to standard output.
- You may choose what tables or views to inspect by passing their names as
- arguments. If no arguments are provided, models are created for views only if
- the :option:`--include-views` option is used. Models for partition tables are
- created on PostgreSQL if the :option:`--include-partitions` option is used.
- Use this if you have a legacy database with which you'd like to use Django.
- The script will inspect the database and create a model for each table within
- it.
- As you might expect, the created models will have an attribute for every field
- in the table. Note that ``inspectdb`` has a few special cases in its field-name
- output:
- * If ``inspectdb`` cannot map a column's type to a model field type, it'll
- use ``TextField`` and will insert the Python comment
- ``'This field type is a guess.'`` next to the field in the generated
- model. The recognized fields may depend on apps listed in
- :setting:`INSTALLED_APPS`. For example, :mod:`django.contrib.postgres` adds
- recognition for several PostgreSQL-specific field types.
- * If the database column name is a Python reserved word (such as
- ``'pass'``, ``'class'`` or ``'for'``), ``inspectdb`` will append
- ``'_field'`` to the attribute name. For example, if a table has a column
- ``'for'``, the generated model will have a field ``'for_field'``, with
- the ``db_column`` attribute set to ``'for'``. ``inspectdb`` will insert
- the Python comment
- ``'Field renamed because it was a Python reserved word.'`` next to the
- field.
- This feature is meant as a shortcut, not as definitive model generation. After
- you run it, you'll want to look over the generated models yourself to make
- customizations. In particular, you'll need to rearrange models' order, so that
- models that refer to other models are ordered properly.
- Django doesn't create database defaults when a
- :attr:`~django.db.models.Field.default` is specified on a model field.
- Similarly, database defaults aren't translated to model field defaults or
- detected in any fashion by ``inspectdb``.
- By default, ``inspectdb`` creates unmanaged models. That is, ``managed = False``
- in the model's ``Meta`` class tells Django not to manage each table's creation,
- modification, and deletion. If you do want to allow Django to manage the
- table's lifecycle, you'll need to change the
- :attr:`~django.db.models.Options.managed` option to ``True`` (or remove
- it because ``True`` is its default value).
- Database-specific notes
- ~~~~~~~~~~~~~~~~~~~~~~~
- Oracle
- ^^^^^^
- * Models are created for materialized views if :option:`--include-views` is
- used.
- PostgreSQL
- ^^^^^^^^^^
- * Models are created for foreign tables.
- * Models are created for materialized views if
- :option:`--include-views` is used.
- * Models are created for partition tables if
- :option:`--include-partitions` is used.
- .. django-admin-option:: --database DATABASE
- Specifies the database to introspect. Defaults to ``default``.
- .. django-admin-option:: --include-partitions
- If this option is provided, models are also created for partitions.
- Only support for PostgreSQL is implemented.
- .. django-admin-option:: --include-views
- If this option is provided, models are also created for database views.
- ``loaddata``
- ------------
- .. django-admin:: loaddata fixture [fixture ...]
- Searches for and loads the contents of the named
- :ref:`fixture <fixtures-explanation>` into the database.
- .. django-admin-option:: --database DATABASE
- Specifies the database into which the data will be loaded. Defaults to
- ``default``.
- .. django-admin-option:: --ignorenonexistent, -i
- Ignores fields and models that may have been removed since the fixture was
- originally generated.
- .. django-admin-option:: --app APP_LABEL
- Specifies a single app to look for fixtures in rather than looking in all apps.
- .. django-admin-option:: --format FORMAT
- Specifies the :ref:`serialization format <serialization-formats>` (e.g.,
- ``json`` or ``xml``) for fixtures :ref:`read from stdin
- <loading-fixtures-stdin>`.
- .. django-admin-option:: --exclude EXCLUDE, -e EXCLUDE
- Excludes loading the fixtures from the given applications and/or models (in the
- form of ``app_label`` or ``app_label.ModelName``). Use the option multiple
- times to exclude more than one app or model.
- .. _loading-fixtures-stdin:
- Loading fixtures from ``stdin``
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- You can use a dash as the fixture name to load input from ``sys.stdin``. For
- example:
- .. console::
- django-admin loaddata --format=json -
- When reading from ``stdin``, the :option:`--format <loaddata --format>` option
- is required to specify the :ref:`serialization format <serialization-formats>`
- of the input (e.g., ``json`` or ``xml``).
- Loading from ``stdin`` is useful with standard input and output redirections.
- For example:
- .. console::
- django-admin dumpdata --format=json --database=test app_label.ModelName | django-admin loaddata --format=json --database=prod -
- The :djadmin:`dumpdata` command can be used to generate input for ``loaddata``.
- .. seealso::
- For more detail about fixtures see the :ref:`fixtures-explanation` topic.
- ``makemessages``
- ----------------
- .. django-admin:: makemessages
- Runs over the entire source tree of the current directory and pulls out all
- strings marked for translation. It creates (or updates) a message file in the
- conf/locale (in the Django tree) or locale (for project and application)
- directory. After making changes to the messages files you need to compile them
- with :djadmin:`compilemessages` for use with the builtin gettext support. See
- the :ref:`i18n documentation <how-to-create-language-files>` for details.
- This command doesn't require configured settings. However, when settings aren't
- configured, the command can't ignore the :setting:`MEDIA_ROOT` and
- :setting:`STATIC_ROOT` directories or include :setting:`LOCALE_PATHS`.
- .. django-admin-option:: --all, -a
- Updates the message files for all available languages.
- .. django-admin-option:: --extension EXTENSIONS, -e EXTENSIONS
- Specifies a list of file extensions to examine (default: ``html``, ``txt``,
- ``py`` or ``js`` if :option:`--domain` is ``djangojs``).
- Example usage:
- .. console::
- django-admin makemessages --locale=de --extension xhtml
- Separate multiple extensions with commas or use ``-e`` or ``--extension``
- multiple times:
- .. console::
- django-admin makemessages --locale=de --extension=html,txt --extension xml
- .. django-admin-option:: --locale LOCALE, -l LOCALE
- Specifies the locale(s) to process.
- .. django-admin-option:: --exclude EXCLUDE, -x EXCLUDE
- Specifies the locale(s) to exclude from processing. If not provided, no locales
- are excluded.
- Example usage:
- .. console::
- django-admin makemessages --locale=pt_BR
- django-admin makemessages --locale=pt_BR --locale=fr
- django-admin makemessages -l pt_BR
- django-admin makemessages -l pt_BR -l fr
- django-admin makemessages --exclude=pt_BR
- django-admin makemessages --exclude=pt_BR --exclude=fr
- django-admin makemessages -x pt_BR
- django-admin makemessages -x pt_BR -x fr
- .. django-admin-option:: --domain DOMAIN, -d DOMAIN
- Specifies the domain of the messages files. Supported options are:
- * ``django`` for all ``*.py``, ``*.html`` and ``*.txt`` files (default)
- * ``djangojs`` for ``*.js`` files
- .. django-admin-option:: --symlinks, -s
- Follows symlinks to directories when looking for new translation strings.
- Example usage:
- .. console::
- django-admin makemessages --locale=de --symlinks
- .. django-admin-option:: --ignore PATTERN, -i PATTERN
- Ignores files or directories matching the given :mod:`glob`-style pattern. Use
- multiple times to ignore more.
- These patterns are used by default: ``'CVS'``, ``'.*'``, ``'*~'``, ``'*.pyc'``.
- Example usage:
- .. console::
- django-admin makemessages --locale=en_US --ignore=apps/* --ignore=secret/*.html
- .. django-admin-option:: --no-default-ignore
- Disables the default values of ``--ignore``.
- .. django-admin-option:: --no-wrap
- Disables breaking long message lines into several lines in language files.
- .. django-admin-option:: --no-location
- Suppresses writing '``#: filename:line``’ comment lines in language files.
- Using this option makes it harder for technically skilled translators to
- understand each message's context.
- .. django-admin-option:: --add-location [{full,file,never}]
- Controls ``#: filename:line`` comment lines in language files. If the option
- is:
- * ``full`` (the default if not given): the lines include both file name and
- line number.
- * ``file``: the line number is omitted.
- * ``never``: the lines are suppressed (same as :option:`--no-location`).
- Requires ``gettext`` 0.19 or newer.
- .. django-admin-option:: --no-obsolete
- Removes obsolete message strings from the ``.po`` files.
- .. django-admin-option:: --keep-pot
- Prevents deleting the temporary ``.pot`` files generated before creating the
- ``.po`` file. This is useful for debugging errors which may prevent the final
- language files from being created.
- .. seealso::
- See :ref:`customizing-makemessages` for instructions on how to customize
- the keywords that :djadmin:`makemessages` passes to ``xgettext``.
- ``makemigrations``
- ------------------
- .. django-admin:: makemigrations [app_label [app_label ...]]
- Creates new migrations based on the changes detected to your models.
- Migrations, their relationship with apps and more are covered in depth in
- :doc:`the migrations documentation</topics/migrations>`.
- Providing one or more app names as arguments will limit the migrations created
- to the app(s) specified and any dependencies needed (the table at the other end
- of a ``ForeignKey``, for example).
- To add migrations to an app that doesn't have a ``migrations`` directory, run
- ``makemigrations`` with the app's ``app_label``.
- .. django-admin-option:: --noinput, --no-input
- Suppresses all user prompts. If a suppressed prompt cannot be resolved
- automatically, the command will exit with error code 3.
- .. django-admin-option:: --empty
- Outputs an empty migration for the specified apps, for manual editing. This is
- for advanced users and should not be used unless you are familiar with the
- migration format, migration operations, and the dependencies between your
- migrations.
- .. django-admin-option:: --dry-run
- Shows what migrations would be made without actually writing any migrations
- files to disk. Using this option along with ``--verbosity 3`` will also show
- the complete migrations files that would be written.
- .. django-admin-option:: --merge
- Enables fixing of migration conflicts.
- .. django-admin-option:: --name NAME, -n NAME
- Allows naming the generated migration(s) instead of using a generated name. The
- name must be a valid Python :ref:`identifier <python:identifiers>`.
- .. django-admin-option:: --no-header
- Generate migration files without Django version and timestamp header.
- .. django-admin-option:: --check
- Makes ``makemigrations`` exit with a non-zero status when model changes without
- migrations are detected. Implies ``--dry-run``.
- .. django-admin-option:: --scriptable
- Diverts log output and input prompts to ``stderr``, writing only paths of
- generated migration files to ``stdout``.
- .. django-admin-option:: --update
- Merges model changes into the latest migration and optimize the resulting
- operations.
- The updated migration will have a generated name. In order to preserve the
- previous name, set it using ``--name``.
- ``migrate``
- -----------
- .. django-admin:: migrate [app_label] [migration_name]
- Synchronizes the database state with the current set of models and migrations.
- Migrations, their relationship with apps and more are covered in depth in
- :doc:`the migrations documentation</topics/migrations>`.
- The behavior of this command changes depending on the arguments provided:
- * No arguments: All apps have all of their migrations run.
- * ``<app_label>``: The specified app has its migrations run, up to the most
- recent migration. This may involve running other apps' migrations too, due
- to dependencies.
- * ``<app_label> <migrationname>``: Brings the database schema to a state where
- the named migration is applied, but no later migrations in the same app are
- applied. This may involve unapplying migrations if you have previously
- migrated past the named migration. You can use a prefix of the migration
- name, e.g. ``0001``, as long as it's unique for the given app name. Use the
- name ``zero`` to migrate all the way back i.e. to revert all applied
- migrations for an app.
- .. warning::
- When unapplying migrations, all dependent migrations will also be
- unapplied, regardless of ``<app_label>``. You can use ``--plan`` to check
- which migrations will be unapplied.
- .. django-admin-option:: --database DATABASE
- Specifies the database to migrate. Defaults to ``default``.
- .. django-admin-option:: --fake
- Marks the migrations up to the target one (following the rules above) as
- applied, but without actually running the SQL to change your database schema.
- This is intended for advanced users to manipulate the
- current migration state directly if they're manually applying changes;
- be warned that using ``--fake`` runs the risk of putting the migration state
- table into a state where manual recovery will be needed to make migrations
- run correctly.
- .. django-admin-option:: --fake-initial
- Allows Django to skip an app's initial migration if all database tables with
- the names of all models created by all
- :class:`~django.db.migrations.operations.CreateModel` operations in that
- migration already exist. This option is intended for use when first running
- migrations against a database that preexisted the use of migrations. This
- option does not, however, check for matching database schema beyond matching
- table names and so is only safe to use if you are confident that your existing
- schema matches what is recorded in your initial migration.
- .. django-admin-option:: --plan
- Shows the migration operations that will be performed for the given ``migrate``
- command.
- .. django-admin-option:: --run-syncdb
- Allows creating tables for apps without migrations. While this isn't
- recommended, the migrations framework is sometimes too slow on large projects
- with hundreds of models.
- .. django-admin-option:: --noinput, --no-input
- Suppresses all user prompts. An example prompt is asking about removing stale
- content types.
- .. django-admin-option:: --check
- Makes ``migrate`` exit with a non-zero status when unapplied migrations are
- detected.
- .. django-admin-option:: --prune
- Deletes nonexistent migrations from the ``django_migrations`` table. This is
- useful when migration files replaced by a squashed migration have been removed.
- See :ref:`migration-squashing` for more details.
- ``optimizemigration``
- ---------------------
- .. django-admin:: optimizemigration app_label migration_name
- Optimizes the operations for the named migration and overrides the existing
- file. If the migration contains functions that must be manually copied, the
- command creates a new migration file suffixed with ``_optimized`` that is meant
- to replace the named migration.
- .. django-admin-option:: --check
- Makes ``optimizemigration`` exit with a non-zero status when a migration can be
- optimized.
- ``runserver``
- -------------
- .. django-admin:: runserver [addrport]
- Starts a lightweight development web server on the local machine. By default,
- the server runs on port 8000 on the IP address ``127.0.0.1``. You can pass in an
- IP address and port number explicitly.
- If you run this script as a user with normal privileges (recommended), you
- might not have access to start a port on a low port number. Low port numbers
- are reserved for the superuser (root).
- This server uses the WSGI application object specified by the
- :setting:`WSGI_APPLICATION` setting.
- .. warning:: DO NOT USE THIS SERVER IN A PRODUCTION SETTING.
- This lightweight development server has not gone through security audits or
- performance tests, hence is unsuitable for production. Making this server
- able to handle a production environment is outside the scope of Django.
- The development server automatically reloads Python code for each request, as
- needed. You don't need to restart the server for code changes to take effect.
- However, some actions like adding files don't trigger a restart, so you'll
- have to restart the server in these cases.
- If you're using Linux or MacOS and install both :pypi:`pywatchman` and the
- `Watchman`_ service, kernel signals will be used to autoreload the server
- (rather than polling file modification timestamps each second). This offers
- better performance on large projects, reduced response time after code changes,
- more robust change detection, and a reduction in power usage. Django supports
- ``pywatchman`` 1.2.0 and higher.
- .. admonition:: Large directories with many files may cause performance issues
- When using Watchman with a project that includes large non-Python
- directories like ``node_modules``, it's advisable to ignore this directory
- for optimal performance. See the `watchman documentation`_ for information
- on how to do this.
- .. admonition:: Watchman timeout
- .. envvar:: DJANGO_WATCHMAN_TIMEOUT
- The default timeout of ``Watchman`` client is 5 seconds. You can change it
- by setting the :envvar:`DJANGO_WATCHMAN_TIMEOUT` environment variable.
- .. _Watchman: https://facebook.github.io/watchman/
- .. _watchman documentation: https://facebook.github.io/watchman/docs/config#ignore_dirs
- When you start the server, and each time you change Python code while the
- server is running, the system check framework will check your entire Django
- project for some common errors (see the :djadmin:`check` command). If any
- errors are found, they will be printed to standard output. You can use the
- ``--skip-checks`` option to skip running system checks.
- You can run as many concurrent servers as you want, as long as they're on
- separate ports by executing ``django-admin runserver`` more than once.
- Note that the default IP address, ``127.0.0.1``, is not accessible from other
- machines on your network. To make your development server viewable to other
- machines on the network, use its own IP address (e.g. ``192.168.2.1``), ``0``
- (shortcut for ``0.0.0.0``), ``0.0.0.0``, or ``::`` (with IPv6 enabled).
- You can provide an IPv6 address surrounded by brackets
- (e.g. ``[200a::1]:8000``). This will automatically enable IPv6 support.
- A hostname containing ASCII-only characters can also be used.
- If the :doc:`staticfiles</ref/contrib/staticfiles>` contrib app is enabled
- (default in new projects) the :djadmin:`runserver` command will be overridden
- with its own :ref:`runserver<staticfiles-runserver>` command.
- Logging of each request and response of the server is sent to the
- :ref:`django-server-logger` logger.
- .. django-admin-option:: --noreload
- Disables the auto-reloader. This means any Python code changes you make while
- the server is running will *not* take effect if the particular Python modules
- have already been loaded into memory.
- .. django-admin-option:: --nothreading
- Disables use of threading in the development server. The server is
- multithreaded by default.
- .. django-admin-option:: --ipv6, -6
- Uses IPv6 for the development server. This changes the default IP address from
- ``127.0.0.1`` to ``::1``.
- .. envvar:: HIDE_PRODUCTION_WARNING
- .. versionadded:: 5.2
- By default, a warning is printed to the console that ``runserver`` is not
- suitable for production:
- .. code-block:: text
- WARNING: This is a development server. Do not use it in a production setting. Use a production WSGI or ASGI server instead.
- For more information on production servers see: https://docs.djangoproject.com/en/|version|/howto/deployment/
- Set this environment variable to ``"true"`` to hide this warning.
- Examples of using different ports and addresses
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Port 8000 on IP address ``127.0.0.1``:
- .. console::
- django-admin runserver
- Port 8000 on IP address ``1.2.3.4``:
- .. console::
- django-admin runserver 1.2.3.4:8000
- Port 7000 on IP address ``127.0.0.1``:
- .. console::
- django-admin runserver 7000
- Port 7000 on IP address ``1.2.3.4``:
- .. console::
- django-admin runserver 1.2.3.4:7000
- Port 8000 on IPv6 address ``::1``:
- .. console::
- django-admin runserver -6
- Port 7000 on IPv6 address ``::1``:
- .. console::
- django-admin runserver -6 7000
- Port 7000 on IPv6 address ``2001:0db8:1234:5678::9``:
- .. console::
- django-admin runserver [2001:0db8:1234:5678::9]:7000
- Port 8000 on IPv4 address of host ``localhost``:
- .. console::
- django-admin runserver localhost:8000
- Port 8000 on IPv6 address of host ``localhost``:
- .. console::
- django-admin runserver -6 localhost:8000
- Serving static files with the development server
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- By default, the development server doesn't serve any static files for your site
- (such as CSS files, images, things under :setting:`MEDIA_URL` and so forth). If
- you want to configure Django to serve static media, read
- :doc:`/howto/static-files/index`.
- Serving with ASGI in development
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Django's ``runserver`` command provides a WSGI server. In order to run under
- ASGI you will need to use an :doc:`ASGI server </howto/deployment/asgi/index>`.
- The Django Daphne project provides :ref:`daphne-runserver` that you can use.
- ``sendtestemail``
- -----------------
- .. django-admin:: sendtestemail [email [email ...]]
- Sends a test email (to confirm email sending through Django is working) to the
- recipient(s) specified. For example:
- .. console::
- django-admin sendtestemail foo@example.com bar@example.com
- There are a couple of options, and you may use any combination of them
- together:
- .. django-admin-option:: --managers
- Mails the email addresses specified in :setting:`MANAGERS` using
- :meth:`~django.core.mail.mail_managers()`.
- .. django-admin-option:: --admins
- Mails the email addresses specified in :setting:`ADMINS` using
- :meth:`~django.core.mail.mail_admins()`.
- ``shell``
- ---------
- .. django-admin:: shell
- Starts the Python interactive interpreter.
- .. django-admin-option:: --interface {ipython,bpython,python}, -i {ipython,bpython,python}
- Specifies the shell to use. By default, Django will use IPython_ or bpython_ if
- either is installed. If both are installed, specify which one you want like so:
- IPython:
- .. console::
- django-admin shell -i ipython
- bpython:
- .. console::
- django-admin shell -i bpython
- If you have a "rich" shell installed but want to force use of the "plain"
- Python interpreter, use ``python`` as the interface name, like so:
- .. console::
- django-admin shell -i python
- .. _IPython: https://ipython.org/
- .. _bpython: https://bpython-interpreter.org/
- .. django-admin-option:: --no-startup
- Disables reading the startup script for the "plain" Python interpreter. By
- default, the script pointed to by the :envvar:`PYTHONSTARTUP` environment
- variable or the ``~/.pythonrc.py`` script is read.
- .. django-admin-option:: --command COMMAND, -c COMMAND
- Lets you pass a command as a string to execute it as Django, like so:
- .. console::
- django-admin shell --command="import django; print(django.__version__)"
- You can also pass code in on standard input to execute it. For example:
- .. code-block:: console
- $ django-admin shell <<EOF
- > import django
- > print(django.__version__)
- > EOF
- On Windows, the REPL is output due to implementation limits of
- :func:`select.select` on that platform.
- ``showmigrations``
- ------------------
- .. django-admin:: showmigrations [app_label [app_label ...]]
- Shows all migrations in a project. You can choose from one of two formats:
- .. django-admin-option:: --list, -l
- Lists all of the apps Django knows about, the migrations available for each
- app, and whether or not each migration is applied (marked by an ``[X]`` next to
- the migration name). For a ``--verbosity`` of 2 and above, the applied
- datetimes are also shown.
- Apps without migrations are also listed, but have ``(no migrations)`` printed
- under them.
- This is the default output format.
- .. django-admin-option:: --plan, -p
- Shows the migration plan Django will follow to apply migrations. Like
- ``--list``, applied migrations are marked by an ``[X]``. For a ``--verbosity``
- of 2 and above, all dependencies of a migration will also be shown.
- ``app_label``\s arguments limit the output, however, dependencies of provided
- apps may also be included.
- .. django-admin-option:: --database DATABASE
- Specifies the database to examine. Defaults to ``default``.
- ``sqlflush``
- ------------
- .. django-admin:: sqlflush
- Prints the SQL statements that would be executed for the :djadmin:`flush`
- command.
- .. django-admin-option:: --database DATABASE
- Specifies the database for which to print the SQL. Defaults to ``default``.
- ``sqlmigrate``
- --------------
- .. django-admin:: sqlmigrate app_label migration_name
- Prints the SQL for the named migration. This requires an active database
- connection, which it will use to resolve constraint names; this means you must
- generate the SQL against a copy of the database you wish to later apply it on.
- Note that ``sqlmigrate`` doesn't colorize its output.
- .. django-admin-option:: --backwards
- Generates the SQL for unapplying the migration. By default, the SQL created is
- for running the migration in the forwards direction.
- .. django-admin-option:: --database DATABASE
- Specifies the database for which to generate the SQL. Defaults to ``default``.
- ``sqlsequencereset``
- --------------------
- .. django-admin:: sqlsequencereset app_label [app_label ...]
- Prints the SQL statements for resetting sequences for the given app name(s).
- Sequences are indexes used by some database engines to track the next available
- number for automatically incremented fields.
- Use this command to generate SQL which will fix cases where a sequence is out
- of sync with its automatically incremented field data.
- .. django-admin-option:: --database DATABASE
- Specifies the database for which to print the SQL. Defaults to ``default``.
- ``squashmigrations``
- --------------------
- .. django-admin:: squashmigrations app_label [start_migration_name] migration_name
- Squashes the migrations for ``app_label`` up to and including ``migration_name``
- down into fewer migrations, if possible. The resulting squashed migrations
- can live alongside the unsquashed ones safely. For more information,
- please read :ref:`migration-squashing`.
- When ``start_migration_name`` is given, Django will only include migrations
- starting from and including this migration. This helps to mitigate the
- squashing limitation of :class:`~django.db.migrations.operations.RunPython` and
- :class:`django.db.migrations.operations.RunSQL` migration operations.
- .. django-admin-option:: --no-optimize
- Disables the optimizer when generating a squashed migration. By default, Django
- will try to optimize the operations in your migrations to reduce the size of
- the resulting file. Use this option if this process is failing or creating
- incorrect migrations, though please also file a Django bug report about the
- behavior, as optimization is meant to be safe.
- .. django-admin-option:: --noinput, --no-input
- Suppresses all user prompts.
- .. django-admin-option:: --squashed-name SQUASHED_NAME
- Sets the name of the squashed migration. When omitted, the name is based on the
- first and last migration, with ``_squashed_`` in between.
- .. django-admin-option:: --no-header
- Generate squashed migration file without Django version and timestamp header.
- ``startapp``
- ------------
- .. django-admin:: startapp name [directory]
- Creates a Django app directory structure for the given app name in the current
- directory or the given destination.
- By default, :source:`the new directory <django/conf/app_template>` contains a
- ``models.py`` file and other app template files. If only the app name is given,
- the app directory will be created in the current working directory.
- If the optional destination is provided, Django will use that existing
- directory rather than creating a new one. You can use '.' to denote the current
- working directory.
- For example:
- .. console::
- django-admin startapp myapp /Users/jezdez/Code/myapp
- .. _custom-app-and-project-templates:
- .. django-admin-option:: --template TEMPLATE
- Provides the path to a directory with a custom app template file, or a path to
- an uncompressed archive (``.tar``) or a compressed archive (``.tar.gz``,
- ``.tar.bz2``, ``.tar.xz``, ``.tar.lzma``, ``.tgz``, ``.tbz2``, ``.txz``,
- ``.tlz``, ``.zip``) containing the app template files.
- For example, this would look for an app template in the given directory when
- creating the ``myapp`` app:
- .. console::
- django-admin startapp --template=/Users/jezdez/Code/my_app_template myapp
- Django will also accept URLs (``http``, ``https``, ``ftp``) to compressed
- archives with the app template files, downloading and extracting them on the
- fly.
- For example, taking advantage of GitHub's feature to expose repositories as
- zip files, you can use a URL like:
- .. console::
- django-admin startapp --template=https://github.com/githubuser/django-app-template/archive/main.zip myapp
- .. django-admin-option:: --extension EXTENSIONS, -e EXTENSIONS
- Specifies which file extensions in the app template should be rendered with the
- template engine. Defaults to ``py``.
- .. django-admin-option:: --name FILES, -n FILES
- Specifies which files in the app template (in addition to those matching
- ``--extension``) should be rendered with the template engine. Defaults to an
- empty list.
- .. django-admin-option:: --exclude DIRECTORIES, -x DIRECTORIES
- Specifies which directories in the app template should be excluded, in addition
- to ``.git`` and ``__pycache__``. If this option is not provided, directories
- named ``__pycache__`` or starting with ``.`` will be excluded.
- The :class:`template context <django.template.Context>` used for all matching
- files is:
- - Any option passed to the ``startapp`` command (among the command's supported
- options)
- - ``app_name`` -- the app name as passed to the command
- - ``app_directory`` -- the full path of the newly created app
- - ``camel_case_app_name`` -- the app name in camel case format
- - ``docs_version`` -- the version of the documentation: ``'dev'`` or ``'1.x'``
- - ``django_version`` -- the version of Django, e.g. ``'2.0.3'``
- .. _render_warning:
- .. warning::
- When the app template files are rendered with the Django template
- engine (by default all ``*.py`` files), Django will also replace all
- stray template variables contained. For example, if one of the Python files
- contains a docstring explaining a particular feature related
- to template rendering, it might result in an incorrect example.
- To work around this problem, you can use the :ttag:`templatetag`
- template tag to "escape" the various parts of the template syntax.
- In addition, to allow Python template files that contain Django template
- language syntax while also preventing packaging systems from trying to
- byte-compile invalid ``*.py`` files, template files ending with ``.py-tpl``
- will be renamed to ``.py``.
- .. _trusted_code_warning:
- .. warning::
- The contents of custom app (or project) templates should always be
- audited before use: Such templates define code that will become
- part of your project, and this means that such code will be trusted
- as much as any app you install, or code you write yourself.
- Further, even rendering the templates is, effectively, executing
- code that was provided as input to the management command. The
- Django template language may provide wide access into the system,
- so make sure any custom template you use is worthy of your trust.
- ``startproject``
- ----------------
- .. django-admin:: startproject name [directory]
- Creates a Django project directory structure for the given project name in
- the current directory or the given destination.
- By default, :source:`the new directory <django/conf/project_template>` contains
- ``manage.py`` and a project package (containing a ``settings.py`` and other
- files).
- If only the project name is given, both the project directory and project
- package will be named ``<projectname>`` and the project directory
- will be created in the current working directory.
- If the optional destination is provided, Django will use that existing
- directory as the project directory, and create ``manage.py`` and the project
- package within it. Use '.' to denote the current working directory.
- For example:
- .. console::
- django-admin startproject myproject /Users/jezdez/Code/myproject_repo
- .. django-admin-option:: --template TEMPLATE
- Specifies a directory, file path, or URL of a custom project template. See the
- :option:`startapp --template` documentation for examples and usage.
- .. django-admin-option:: --extension EXTENSIONS, -e EXTENSIONS
- Specifies which file extensions in the project template should be rendered with
- the template engine. Defaults to ``py``.
- .. django-admin-option:: --name FILES, -n FILES
- Specifies which files in the project template (in addition to those matching
- ``--extension``) should be rendered with the template engine. Defaults to an
- empty list.
- .. django-admin-option:: --exclude DIRECTORIES, -x DIRECTORIES
- Specifies which directories in the project template should be excluded, in
- addition to ``.git`` and ``__pycache__``. If this option is not provided,
- directories named ``__pycache__`` or starting with ``.`` will be excluded.
- The :class:`template context <django.template.Context>` used is:
- - Any option passed to the ``startproject`` command (among the command's
- supported options)
- - ``project_name`` -- the project name as passed to the command
- - ``project_directory`` -- the full path of the newly created project
- - ``secret_key`` -- a random key for the :setting:`SECRET_KEY` setting
- - ``docs_version`` -- the version of the documentation: ``'dev'`` or ``'1.x'``
- - ``django_version`` -- the version of Django, e.g. ``'2.0.3'``
- Please also see the :ref:`rendering warning <render_warning>` and
- :ref:`trusted code warning <trusted_code_warning>` as mentioned for
- :djadmin:`startapp`.
- ``test``
- --------
- .. django-admin:: test [test_label [test_label ...]]
- Runs tests for all installed apps. See :doc:`/topics/testing/index` for more
- information.
- .. django-admin-option:: --failfast
- Stops running tests and reports the failure immediately after a test fails.
- .. django-admin-option:: --testrunner TESTRUNNER
- Controls the test runner class that is used to execute tests. This value
- overrides the value provided by the :setting:`TEST_RUNNER` setting.
- .. django-admin-option:: --noinput, --no-input
- Suppresses all user prompts. A typical prompt is a warning about deleting an
- existing test database.
- Test runner options
- ~~~~~~~~~~~~~~~~~~~
- The ``test`` command receives options on behalf of the specified
- :option:`--testrunner`. These are the options of the default test runner:
- :class:`~django.test.runner.DiscoverRunner`.
- .. django-admin-option:: --keepdb
- Preserves the test database between test runs. This has the advantage of
- skipping both the create and destroy actions which can greatly decrease the
- time to run tests, especially those in a large test suite. If the test database
- does not exist, it will be created on the first run and then preserved for each
- subsequent run. Unless the :setting:`MIGRATE <TEST_MIGRATE>` test setting is
- ``False``, any unapplied migrations will also be applied to the test database
- before running the test suite.
- .. django-admin-option:: --shuffle [SEED]
- Randomizes the order of tests before running them. This can help detect tests
- that aren't properly isolated. The test order generated by this option is a
- deterministic function of the integer seed given. When no seed is passed, a
- seed is chosen randomly and printed to the console. To repeat a particular test
- order, pass a seed. The test orders generated by this option preserve Django's
- :ref:`guarantees on test order <order-of-tests>`. They also keep tests grouped
- by test case class.
- The shuffled orderings also have a special consistency property useful when
- narrowing down isolation issues. Namely, for a given seed and when running a
- subset of tests, the new order will be the original shuffling restricted to the
- smaller set. Similarly, when adding tests while keeping the seed the same, the
- order of the original tests will be the same in the new order.
- .. django-admin-option:: --reverse, -r
- Sorts test cases in the opposite execution order. This may help in debugging
- the side effects of tests that aren't properly isolated. :ref:`Grouping by test
- class <order-of-tests>` is preserved when using this option. This can be used
- in conjunction with ``--shuffle`` to reverse the order for a particular seed.
- .. django-admin-option:: --debug-mode
- Sets the :setting:`DEBUG` setting to ``True`` prior to running tests. This may
- help troubleshoot test failures.
- .. django-admin-option:: --debug-sql, -d
- Enables :ref:`SQL logging <django-db-logger>` for failing tests. If
- ``--verbosity`` is ``2``, then queries in passing tests are also output.
- .. django-admin-option:: --parallel [N]
- .. envvar:: DJANGO_TEST_PROCESSES
- Runs tests in separate parallel processes. Since modern processors have
- multiple cores, this allows running tests significantly faster.
- Using ``--parallel`` without a value, or with the value ``auto``, runs one test
- process per core according to :func:`multiprocessing.cpu_count()`. You can
- override this by passing the desired number of processes, e.g.
- ``--parallel 4``, or by setting the :envvar:`DJANGO_TEST_PROCESSES` environment
- variable.
- Django distributes test cases — :class:`unittest.TestCase` subclasses — to
- subprocesses. If there are fewer test case classes than configured processes,
- Django will reduce the number of processes accordingly.
- Each process gets its own database. You must ensure that different test case
- classes don't access the same resources. For instance, test case classes that
- touch the filesystem should create a temporary directory for their own use.
- .. note::
- If you have test classes that cannot be run in parallel, you can use
- ``SerializeMixin`` to run them sequentially. See :ref:`Enforce running test
- classes sequentially <topics-testing-enforce-run-sequentially>`.
- This option requires the third-party ``tblib`` package to display tracebacks
- correctly:
- .. code-block:: console
- $ python -m pip install tblib
- This feature isn't available on Windows. It doesn't work with the Oracle
- database backend either.
- If you want to use :mod:`pdb` while debugging tests, you must disable parallel
- execution (``--parallel=1``). You'll see something like ``bdb.BdbQuit`` if you
- don't.
- .. warning::
- When test parallelization is enabled and a test fails, Django may be
- unable to display the exception traceback. This can make debugging
- difficult. If you encounter this problem, run the affected test without
- parallelization to see the traceback of the failure.
- This is a known limitation. It arises from the need to serialize objects
- in order to exchange them between processes. See
- :ref:`python:pickle-picklable` for details.
- .. option:: --tag TAGS
- Runs only tests :ref:`marked with the specified tags <topics-tagging-tests>`.
- May be specified multiple times and combined with :option:`test --exclude-tag`.
- Tests that fail to load are always considered matching.
- .. option:: --exclude-tag EXCLUDE_TAGS
- Excludes tests :ref:`marked with the specified tags <topics-tagging-tests>`.
- May be specified multiple times and combined with :option:`test --tag`.
- .. django-admin-option:: -k TEST_NAME_PATTERNS
- Runs test methods and classes matching test name patterns, in the same way as
- :option:`unittest's -k option<unittest.-k>`. Can be specified multiple times.
- .. django-admin-option:: --pdb
- Spawns a ``pdb`` debugger at each test error or failure. If you have it
- installed, ``ipdb`` is used instead.
- .. django-admin-option:: --buffer, -b
- Discards output (``stdout`` and ``stderr``) for passing tests, in the same way
- as :option:`unittest's --buffer option<unittest.-b>`.
- .. django-admin-option:: --no-faulthandler
- Django automatically calls :func:`faulthandler.enable()` when starting the
- tests, which allows it to print a traceback if the interpreter crashes. Pass
- ``--no-faulthandler`` to disable this behavior.
- .. django-admin-option:: --timing
- Outputs timings, including database setup and total run time.
- .. django-admin-option:: --durations N
- Shows the N slowest test cases (N=0 for all).
- .. admonition:: Python 3.12 and later
- This feature is only available for Python 3.12 and later.
- ``testserver``
- --------------
- .. django-admin:: testserver [fixture [fixture ...]]
- Runs a Django development server (as in :djadmin:`runserver`) using data from
- the given fixture(s).
- For example, this command:
- .. console::
- django-admin testserver mydata.json
- ...would perform the following steps:
- #. Create a test database, as described in :ref:`the-test-database`.
- #. Populate the test database with fixture data from the given fixtures.
- (For more on fixtures, see the documentation for :djadmin:`loaddata` above.)
- #. Runs the Django development server (as in :djadmin:`runserver`), pointed at
- this newly created test database instead of your production database.
- This is useful in a number of ways:
- * When you're writing :doc:`unit tests </topics/testing/overview>` of how your views
- act with certain fixture data, you can use ``testserver`` to interact with
- the views in a web browser, manually.
- * Let's say you're developing your Django application and have a "pristine"
- copy of a database that you'd like to interact with. You can dump your
- database to a :ref:`fixture <fixtures-explanation>` (using the
- :djadmin:`dumpdata` command, explained above), then use ``testserver`` to run
- your web application with that data. With this arrangement, you have the
- flexibility of messing up your data in any way, knowing that whatever data
- changes you're making are only being made to a test database.
- Note that this server does *not* automatically detect changes to your Python
- source code (as :djadmin:`runserver` does). It does, however, detect changes to
- templates.
- .. django-admin-option:: --addrport ADDRPORT
- Specifies a different port, or IP address and port, from the default of
- ``127.0.0.1:8000``. This value follows exactly the same format and serves
- exactly the same function as the argument to the :djadmin:`runserver` command.
- Examples:
- To run the test server on port 7000 with ``fixture1`` and ``fixture2``:
- .. console::
- django-admin testserver --addrport 7000 fixture1 fixture2
- django-admin testserver fixture1 fixture2 --addrport 7000
- (The above statements are equivalent. We include both of them to demonstrate
- that it doesn't matter whether the options come before or after the fixture
- arguments.)
- To run on 1.2.3.4:7000 with a ``test`` fixture:
- .. console::
- django-admin testserver --addrport 1.2.3.4:7000 test
- .. django-admin-option:: --noinput, --no-input
- Suppresses all user prompts. A typical prompt is a warning about deleting an
- existing test database.
- Commands provided by applications
- =================================
- Some commands are only available when the ``django.contrib`` application that
- :doc:`implements </howto/custom-management-commands>` them has been
- :setting:`enabled <INSTALLED_APPS>`. This section describes them grouped by
- their application.
- ``django.contrib.auth``
- -----------------------
- ``changepassword``
- ~~~~~~~~~~~~~~~~~~
- .. django-admin:: changepassword [<username>]
- This command is only available if Django's :doc:`authentication system
- </topics/auth/index>` (``django.contrib.auth``) is installed.
- Allows changing a user's password. It prompts you to enter a new password twice
- for the given user. If the entries are identical, this immediately becomes the
- new password. If you do not supply a user, the command will attempt to change
- the password whose username matches the current user.
- .. django-admin-option:: --database DATABASE
- Specifies the database to query for the user. Defaults to ``default``.
- Example usage:
- .. console::
- django-admin changepassword ringo
- ``createsuperuser``
- ~~~~~~~~~~~~~~~~~~~
- .. django-admin:: createsuperuser
- .. envvar:: DJANGO_SUPERUSER_PASSWORD
- This command is only available if Django's :doc:`authentication system
- </topics/auth/index>` (``django.contrib.auth``) is installed.
- Creates a superuser account (a user who has all permissions). This is
- useful if you need to create an initial superuser account or if you need to
- programmatically generate superuser accounts for your site(s).
- When run interactively, this command will prompt for a password for
- the new superuser account. When run non-interactively, you can provide
- a password by setting the :envvar:`DJANGO_SUPERUSER_PASSWORD` environment
- variable. Otherwise, no password will be set, and the superuser account will
- not be able to log in until a password has been manually set for it.
- In non-interactive mode, the
- :attr:`~django.contrib.auth.models.CustomUser.USERNAME_FIELD` and required
- fields (listed in
- :attr:`~django.contrib.auth.models.CustomUser.REQUIRED_FIELDS`) fall back to
- ``DJANGO_SUPERUSER_<uppercase_field_name>`` environment variables, unless they
- are overridden by a command line argument. For example, to provide an ``email``
- field, you can use ``DJANGO_SUPERUSER_EMAIL`` environment variable.
- .. django-admin-option:: --noinput, --no-input
- Suppresses all user prompts. If a suppressed prompt cannot be resolved
- automatically, the command will exit with error code 1.
- .. django-admin-option:: --username USERNAME
- .. django-admin-option:: --email EMAIL
- The username and email address for the new account can be supplied by
- using the ``--username`` and ``--email`` arguments on the command
- line. If either of those is not supplied, ``createsuperuser`` will prompt for
- it when running interactively.
- .. django-admin-option:: --database DATABASE
- Specifies the database into which the superuser object will be saved.
- You can subclass the management command and override ``get_input_data()`` if you
- want to customize data input and validation. Consult the source code for
- details on the existing implementation and the method's parameters. For example,
- it could be useful if you have a ``ForeignKey`` in
- :attr:`~django.contrib.auth.models.CustomUser.REQUIRED_FIELDS` and want to
- allow creating an instance instead of entering the primary key of an existing
- instance.
- ``django.contrib.contenttypes``
- -------------------------------
- ``remove_stale_contenttypes``
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- .. django-admin:: remove_stale_contenttypes
- This command is only available if Django's :doc:`contenttypes app
- </ref/contrib/contenttypes>` (:mod:`django.contrib.contenttypes`) is installed.
- Deletes stale content types (from deleted models) in your database. Any objects
- that depend on the deleted content types will also be deleted. A list of
- deleted objects will be displayed before you confirm it's okay to proceed with
- the deletion.
- .. django-admin-option:: --database DATABASE
- Specifies the database to use. Defaults to ``default``.
- .. django-admin-option:: --include-stale-apps
- Deletes stale content types including ones from previously installed apps that
- have been removed from :setting:`INSTALLED_APPS`. Defaults to ``False``.
- ``django.contrib.gis``
- ----------------------
- ``ogrinspect``
- ~~~~~~~~~~~~~~
- This command is only available if :doc:`GeoDjango </ref/contrib/gis/index>`
- (``django.contrib.gis``) is installed.
- Please refer to its :djadmin:`description <ogrinspect>` in the GeoDjango
- documentation.
- ``django.contrib.sessions``
- ---------------------------
- ``clearsessions``
- ~~~~~~~~~~~~~~~~~
- .. django-admin:: clearsessions
- Can be run as a cron job or directly to clean out expired sessions.
- ``django.contrib.staticfiles``
- ------------------------------
- ``collectstatic``
- ~~~~~~~~~~~~~~~~~
- This command is only available if the :doc:`static files application
- </howto/static-files/index>` (``django.contrib.staticfiles``) is installed.
- Please refer to its :djadmin:`description <collectstatic>` in the
- :doc:`staticfiles </ref/contrib/staticfiles>` documentation.
- ``findstatic``
- ~~~~~~~~~~~~~~
- This command is only available if the :doc:`static files application
- </howto/static-files/index>` (``django.contrib.staticfiles``) is installed.
- Please refer to its :djadmin:`description <findstatic>` in the :doc:`staticfiles
- </ref/contrib/staticfiles>` documentation.
- Default options
- ===============
- .. program:: None
- Although some commands may allow their own custom options, every command
- allows for the following options by default:
- .. django-admin-option:: --pythonpath PYTHONPATH
- Adds the given filesystem path to the Python :py:data:`sys.path` module
- attribute. If this isn't provided, ``django-admin`` will use the
- :envvar:`PYTHONPATH` environment variable.
- This option is unnecessary in ``manage.py``, because it takes care of setting
- the Python path for you.
- Example usage:
- .. console::
- django-admin migrate --pythonpath='/home/djangoprojects/myproject'
- .. django-admin-option:: --settings SETTINGS
- Specifies the settings module to use. The settings module should be in Python
- package syntax, e.g. ``mysite.settings``. If this isn't provided,
- ``django-admin`` will use the :envvar:`DJANGO_SETTINGS_MODULE` environment
- variable.
- This option is unnecessary in ``manage.py``, because it uses
- ``settings.py`` from the current project by default.
- Example usage:
- .. console::
- django-admin migrate --settings=mysite.settings
- .. django-admin-option:: --traceback
- Displays a full stack trace when a :exc:`~django.core.management.CommandError`
- is raised. By default, ``django-admin`` will show an error message when a
- ``CommandError`` occurs and a full stack trace for any other exception.
- This option is ignored by :djadmin:`runserver`.
- Example usage:
- .. console::
- django-admin migrate --traceback
- .. django-admin-option:: --verbosity {0,1,2,3}, -v {0,1,2,3}
- Specifies the amount of notification and debug information that a command
- should print to the console.
- * ``0`` means no output.
- * ``1`` means normal output (default).
- * ``2`` means verbose output.
- * ``3`` means *very* verbose output.
- This option is ignored by :djadmin:`runserver`.
- Example usage:
- .. console::
- django-admin migrate --verbosity 2
- .. django-admin-option:: --no-color
- Disables colorized command output. Some commands format their output to be
- colorized. For example, errors will be printed to the console in red and SQL
- statements will be syntax highlighted.
- Example usage:
- .. console::
- django-admin runserver --no-color
- .. django-admin-option:: --force-color
- Forces colorization of the command output if it would otherwise be disabled
- as discussed in :ref:`syntax-coloring`. For example, you may want to pipe
- colored output to another command.
- .. django-admin-option:: --skip-checks
- Skips running system checks prior to running the command. This option is only
- available if the
- :attr:`~django.core.management.BaseCommand.requires_system_checks` command
- attribute is not an empty list or tuple.
- Example usage:
- .. console::
- django-admin migrate --skip-checks
- Extra niceties
- ==============
- .. _syntax-coloring:
- Syntax coloring
- ---------------
- .. envvar:: DJANGO_COLORS
- The ``django-admin`` / ``manage.py`` commands will use pretty
- color-coded output if your terminal supports ANSI-colored output. It
- won't use the color codes if you're piping the command's output to
- another program unless the :option:`--force-color` option is used.
- Windows support
- ~~~~~~~~~~~~~~~
- On Windows 10, the `Windows Terminal`_ application, `VS Code`_, and PowerShell
- (where virtual terminal processing is enabled) allow colored output, and are
- supported by default.
- Under Windows, the legacy ``cmd.exe`` native console doesn't support ANSI
- escape sequences so by default there is no color output. In this case either of
- two third-party libraries are needed:
- * Install :pypi:`colorama`, a Python package that translates ANSI color codes
- into Windows API calls. Django commands will detect its presence and will
- make use of its services to color output just like on Unix-based platforms.
- ``colorama`` can be installed via pip:
- .. code-block:: doscon
- ...\> py -m pip install "colorama >= 0.4.6"
- * Install `ANSICON`_, a third-party tool that allows ``cmd.exe`` to process
- ANSI color codes. Django commands will detect its presence and will make use
- of its services to color output just like on Unix-based platforms.
- Other modern terminal environments on Windows, that support terminal colors,
- but which are not automatically detected as supported by Django, may "fake" the
- installation of ``ANSICON`` by setting the appropriate environmental variable,
- ``ANSICON="on"``.
- .. _`Windows Terminal`: https://www.microsoft.com/en-us/p/windows-terminal-preview/9n0dx20hk701
- .. _`VS Code`: https://code.visualstudio.com
- .. _ANSICON: http://adoxa.altervista.org/ansicon/
- Custom colors
- ~~~~~~~~~~~~~
- The colors used for syntax highlighting can be customized. Django
- ships with three color palettes:
- * ``dark``, suited to terminals that show white text on a black
- background. This is the default palette.
- * ``light``, suited to terminals that show black text on a white
- background.
- * ``nocolor``, which disables syntax highlighting.
- You select a palette by setting a :envvar:`DJANGO_COLORS` environment
- variable to specify the palette you want to use. For example, to
- specify the ``light`` palette under a Unix or OS/X BASH shell, you
- would run the following at a command prompt:
- .. code-block:: shell
- export DJANGO_COLORS="light"
- You can also customize the colors that are used. Django specifies a
- number of roles in which color is used:
- * ``error`` - A major error.
- * ``notice`` - A minor error.
- * ``success`` - A success.
- * ``warning`` - A warning.
- * ``sql_field`` - The name of a model field in SQL.
- * ``sql_coltype`` - The type of a model field in SQL.
- * ``sql_keyword`` - An SQL keyword.
- * ``sql_table`` - The name of a model in SQL.
- * ``http_info`` - A 1XX HTTP Informational server response.
- * ``http_success`` - A 2XX HTTP Success server response.
- * ``http_not_modified`` - A 304 HTTP Not Modified server response.
- * ``http_redirect`` - A 3XX HTTP Redirect server response other than 304.
- * ``http_not_found`` - A 404 HTTP Not Found server response.
- * ``http_bad_request`` - A 4XX HTTP Bad Request server response other than 404.
- * ``http_server_error`` - A 5XX HTTP Server Error response.
- * ``migrate_heading`` - A heading in a migrations management command.
- * ``migrate_label`` - A migration name.
- Each of these roles can be assigned a specific foreground and
- background color, from the following list:
- * ``black``
- * ``red``
- * ``green``
- * ``yellow``
- * ``blue``
- * ``magenta``
- * ``cyan``
- * ``white``
- Each of these colors can then be modified by using the following
- display options:
- * ``bold``
- * ``underscore``
- * ``blink``
- * ``reverse``
- * ``conceal``
- A color specification follows one of the following patterns:
- * ``role=fg``
- * ``role=fg/bg``
- * ``role=fg,option,option``
- * ``role=fg/bg,option,option``
- where ``role`` is the name of a valid color role, ``fg`` is the
- foreground color, ``bg`` is the background color and each ``option``
- is one of the color modifying options. Multiple color specifications
- are then separated by a semicolon. For example:
- .. code-block:: shell
- export DJANGO_COLORS="error=yellow/blue,blink;notice=magenta"
- would specify that errors be displayed using blinking yellow on blue,
- and notices displayed using magenta. All other color roles would be
- left uncolored.
- Colors can also be specified by extending a base palette. If you put
- a palette name in a color specification, all the colors implied by that
- palette will be loaded. So:
- .. code-block:: shell
- export DJANGO_COLORS="light;error=yellow/blue,blink;notice=magenta"
- would specify the use of all the colors in the light color palette,
- *except* for the colors for errors and notices which would be
- overridden as specified.
- Bash completion
- ---------------
- If you use the Bash shell, consider installing the Django bash completion
- script, which lives in :source:`extras/django_bash_completion` in the Django source
- distribution. It enables tab-completion of ``django-admin`` and
- ``manage.py`` commands, so you can, for instance...
- * Type ``django-admin``.
- * Press [TAB] to see all available options.
- * Type ``sql``, then [TAB], to see all available options whose names start
- with ``sql``.
- See :doc:`/howto/custom-management-commands` for how to add customized actions.
- Black formatting
- ----------------
- The Python files created by :djadmin:`startproject`, :djadmin:`startapp`,
- :djadmin:`optimizemigration`, :djadmin:`makemigrations`, and
- :djadmin:`squashmigrations` are formatted using the ``black`` command if it is
- present on your ``PATH``.
- If you have ``black`` globally installed, but do not wish it used for the
- current project, you can set the ``PATH`` explicitly:
- .. code-block:: shell
- PATH=path/to/venv/bin django-admin makemigrations
- For commands using ``stdout`` you can pipe the output to ``black`` if needed:
- .. code-block:: shell
- django-admin inspectdb | black -
- ==========================================
- Running management commands from your code
- ==========================================
- .. function:: django.core.management.call_command(name, *args, **options)
- To call a management command from code use ``call_command()``.
- ``name``
- the name of the command to call or a command object. Passing the name is
- preferred unless the object is required for testing.
- ``*args``
- a list of arguments accepted by the command. Arguments are passed to the
- argument parser, so you can use the same style as you would on the command
- line. For example, ``call_command('flush', '--verbosity=0')``.
- ``**options``
- named options accepted on the command-line. Options are passed to the command
- without triggering the argument parser, which means you'll need to pass the
- correct type. For example, ``call_command('flush', verbosity=0)`` (zero must
- be an integer rather than a string).
- Examples::
- from django.core import management
- from django.core.management.commands import loaddata
- management.call_command("flush", verbosity=0, interactive=False)
- management.call_command("loaddata", "test_data", verbosity=0)
- management.call_command(loaddata.Command(), "test_data", verbosity=0)
- Note that command options that take no arguments are passed as keywords
- with ``True`` or ``False``, as you can see with the ``interactive`` option above.
- Named arguments can be passed by using either one of the following syntaxes::
- # Similar to the command line
- management.call_command("dumpdata", "--natural-foreign")
- # Named argument similar to the command line minus the initial dashes and
- # with internal dashes replaced by underscores
- management.call_command("dumpdata", natural_foreign=True)
- # `use_natural_foreign_keys` is the option destination variable
- management.call_command("dumpdata", use_natural_foreign_keys=True)
- Some command options have different names when using ``call_command()`` instead
- of ``django-admin`` or ``manage.py``. For example, ``django-admin
- createsuperuser --no-input`` translates to ``call_command('createsuperuser',
- interactive=False)``. To find what keyword argument name to use for
- ``call_command()``, check the command's source code for the ``dest`` argument
- passed to ``parser.add_argument()``.
- Command options which take multiple options are passed a list::
- management.call_command("dumpdata", exclude=["contenttypes", "auth"])
- The return value of the ``call_command()`` function is the same as the return
- value of the ``handle()`` method of the command.
- Output redirection
- ==================
- Note that you can redirect standard output and error streams as all commands
- support the ``stdout`` and ``stderr`` options. For example, you could write::
- with open("/path/to/command_output", "w") as f:
- management.call_command("dumpdata", stdout=f)
|