123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172 |
- ==================================
- ``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.
- All models from installed apps are automatically imported into the shell
- environment. Models from apps listed earlier in :setting:`INSTALLED_APPS` take
- precedence. For a ``--verbosity`` of 2 or higher, the automatically imported
- objects will be listed. To disable automatic importing entirely, use the
- ``--no-imports`` flag.
- See the guide on :ref:`customizing this behaviour
- <customizing-shell-auto-imports>` to add or remove automatic imports.
- .. versionchanged:: 5.2
- Automatic models import was added.
- .. 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:: --no-imports
- .. versionadded:: 5.2
- Disables the automatic import of models from :setting:`INSTALLED_APPS`.
- .. 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)
|