Remove notes about things added/removed in development version, since the development...
[django.git] / docs / django-admin.txt
blob28e28089ccce942520602d93da03930996f67e49
1 =============================
2 django-admin.py and manage.py
3 =============================
5 ``django-admin.py`` is Django's command-line utility for administrative tasks.
6 This document outlines all it can do.
8 In addition, ``manage.py`` is automatically created in each Django project.
9 ``manage.py`` is a thin wrapper around ``django-admin.py`` that takes care of
10 two things for you before delegating to ``django-admin.py``:
12     * It puts your project's package on ``sys.path``.
14     * It sets the ``DJANGO_SETTINGS_MODULE`` environment variable so that it
15       points to your project's ``settings.py`` file.
17 The ``django-admin.py`` script should be on your system path if you installed
18 Django via its ``setup.py`` utility. If it's not on your path, you can find it in
19 ``site-packages/django/bin`` within your Python installation. Consider
20 symlinking it from some place on your path, such as ``/usr/local/bin``.
22 For Windows users, who do not have symlinking functionality available, you
23 can copy ``django-admin.py`` to a location on your existing path or edit the
24 ``PATH`` settings (under ``Settings - Control Panel - System - Advanced - Environment...``)
25 to point to its installed location.
27 Generally, when working on a single Django project, it's easier to use
28 ``manage.py``. Use ``django-admin.py`` with ``DJANGO_SETTINGS_MODULE``, or the
29 ``--settings`` command line option, if you need to switch between multiple
30 Django settings files.
32 Usage
33 =====
35 ``django-admin.py action [options]``
37 ``manage.py action [options]``
39 ``action`` should be one of the actions listed in this document. ``options``,
40 which is optional, should be zero or more of the options listed in this
41 document.
43 Run ``django-admin.py --help`` to display a help message that includes a terse
44 list of all available actions and options.
46 Most actions take a list of ``appname``s. An ``appname`` is the basename of the
47 package containing your models. For example, if your ``INSTALLED_APPS``
48 contains the string ``'mysite.blog'``, the ``appname`` is ``blog``.
50 Available actions
51 =================
53 adminindex [appname appname ...]
54 --------------------------------
56 Prints the admin-index template snippet for the given appnames.
58 Use admin-index template snippets if you want to customize the look and feel of
59 your admin's index page. See `Tutorial 2`_ for more information.
61 .. _Tutorial 2: ../tutorial2/
63 createcachetable [tablename]
64 ----------------------------
66 Creates a cache table named ``tablename`` for use with the database cache
67 backend.  See the `cache documentation`_ for more information.
69 .. _cache documentation: ../cache/
71 dbshell
72 -------
74 Runs the command-line client for the database engine specified in your
75 ``DATABASE_ENGINE`` setting, with the connection parameters specified in your
76 ``DATABASE_USER``, ``DATABASE_PASSWORD``, etc., settings.
78     * For PostgreSQL, this runs the ``psql`` command-line client.
79     * For MySQL, this runs the ``mysql`` command-line client.
80     * For SQLite, this runs the ``sqlite3`` command-line client.
82 This command assumes the programs are on your ``PATH`` so that a simple call to
83 the program name (``psql``, ``mysql``, ``sqlite3``) will find the program in
84 the right place. There's no way to specify the location of the program
85 manually.
87 diffsettings
88 ------------
90 Displays differences between the current settings file and Django's default
91 settings.
93 Settings that don't appear in the defaults are followed by ``"###"``. For
94 example, the default settings don't define ``ROOT_URLCONF``, so
95 ``ROOT_URLCONF`` is followed by ``"###"`` in the output of ``diffsettings``.
97 Note that Django's default settings live in ``django/conf/global_settings.py``,
98 if you're ever curious to see the full list of defaults.
100 dumpdata [appname appname ...]
101 ------------------------------
103 Output to standard output all data in the database associated with the named 
104 application(s).
106 By default, the database will be dumped in JSON format. If you want the output
107 to be in another format, use the ``--format`` option (e.g., ``format=xml``). 
108 You may specify any Django serialization backend (including any user specified 
109 serialization backends named in the ``SERIALIZATION_MODULES`` setting).
111 If no application name is provided, all installed applications will be dumped.
113 The output of ``dumpdata`` can be used as input for ``loaddata``. 
115 flush
116 -----
118 Return the database to the state it was in immediately after syncdb was 
119 executed. This means that all data will be removed from the database, any 
120 post-synchronization handlers will be re-executed, and the ``initial_data``
121 fixture will be re-installed.
123 inspectdb
124 ---------
126 Introspects the database tables in the database pointed-to by the
127 ``DATABASE_NAME`` setting and outputs a Django model module (a ``models.py``
128 file) to standard output.
130 Use this if you have a legacy database with which you'd like to use Django.
131 The script will inspect the database and create a model for each table within
134 As you might expect, the created models will have an attribute for every field
135 in the table. Note that ``inspectdb`` has a few special cases in its field-name
136 output:
138     * If ``inspectdb`` cannot map a column's type to a model field type, it'll
139       use ``TextField`` and will insert the Python comment
140       ``'This field type is a guess.'`` next to the field in the generated
141       model.
143     * If the database column name is a Python reserved word (such as
144       ``'pass'``, ``'class'`` or ``'for'``), ``inspectdb`` will append
145       ``'_field'`` to the attribute name. For example, if a table has a column
146       ``'for'``, the generated model will have a field ``'for_field'``, with
147       the ``db_column`` attribute set to ``'for'``. ``inspectdb`` will insert
148       the Python comment
149       ``'Field renamed because it was a Python reserved word.'`` next to the
150       field.
152 This feature is meant as a shortcut, not as definitive model generation. After
153 you run it, you'll want to look over the generated models yourself to make
154 customizations. In particular, you'll need to rearrange models' order, so that
155 models that refer to other models are ordered properly.
157 Primary keys are automatically introspected for PostgreSQL, MySQL and
158 SQLite, in which case Django puts in the ``primary_key=True`` where
159 needed.
161 ``inspectdb`` works with PostgreSQL, MySQL and SQLite. Foreign-key detection
162 only works in PostgreSQL and with certain types of MySQL tables.
164 loaddata [fixture fixture ...]
165 ------------------------------
167 Searches for and loads the contents of the named fixture into the database.
169 A *Fixture* is a collection of files that contain the serialized contents of
170 the database. Each fixture has a unique name; however, the files that
171 comprise the fixture can be distributed over multiple directories, in
172 multiple applications.
174 Django will search in three locations for fixtures:
176    1. In the ``fixtures`` directory of every installed application
177    2. In any directory named in the ``FIXTURE_DIRS`` setting
178    3. In the literal path named by the fixture
180 Django will load any and all fixtures it finds in these locations that match
181 the provided fixture names. 
183 If the named fixture has a file extension, only fixtures of that type 
184 will be loaded. For example::
186     django-admin.py loaddata mydata.json
187     
188 would only load JSON fixtures called ``mydata``. The fixture extension 
189 must correspond to the registered name of a serializer (e.g., ``json`` or 
190 ``xml``).
192 If you omit the extension, Django will search all available fixture types 
193 for a matching fixture. For example::
195     django-admin.py loaddata mydata
196     
197 would look for any fixture of any fixture type called ``mydata``. If a fixture
198 directory contained ``mydata.json``, that fixture would be loaded
199 as a JSON fixture. However, if two fixtures with the same name but different 
200 fixture type are discovered (for example, if ``mydata.json`` and 
201 ``mydata.xml`` were found in the same fixture directory), fixture 
202 installation will be aborted, and any data installed in the call to 
203 ``loaddata`` will be removed from the database.
205 The fixtures that are named can include directory components. These 
206 directories will be included in the search path. For example::
208     django-admin.py loaddata foo/bar/mydata.json
210 would search ``<appname>/fixtures/foo/bar/mydata.json`` for each installed 
211 application,  ``<dirname>/foo/bar/mydata.json`` for each directory in 
212 ``FIXTURE_DIRS``, and the literal path ``foo/bar/mydata.json``.
214 Note that the order in which fixture files are processed is undefined. However,
215 all fixture data is installed as a single transaction, so data in
216 one fixture can reference data in another fixture. If the database backend
217 supports row-level constraints, these constraints will be checked at the
218 end of the transaction.
220 .. admonition:: MySQL and Fixtures
222     Unfortunately, MySQL isn't capable of completely supporting all the 
223     features of Django fixtures. If you use MyISAM tables, MySQL doesn't
224     support transactions or constraints, so you won't get a rollback if 
225     multiple transaction files are found, or validation of fixture data. 
226     If you use InnoDB tables, you won't be able to have any forward 
227     references in your data files - MySQL doesn't provide a mechanism to 
228     defer checking of row constraints until a transaction is committed.    
229     
230 reset [appname appname ...]
231 ---------------------------
232 Executes the equivalent of ``sqlreset`` for the given appnames.
234 runfcgi [options]
235 -----------------
236 Starts a set of FastCGI processes suitable for use with any web server
237 which supports the FastCGI protocol. See the `FastCGI deployment
238 documentation`_ for details. Requires the Python FastCGI module from
239 `flup`_.
241 .. _FastCGI deployment documentation: ../fastcgi/
242 .. _flup: http://www.saddi.com/software/flup/
244 runserver [optional port number, or ipaddr:port]
245 ------------------------------------------------
247 Starts a lightweight development Web server on the local machine. By default,
248 the server runs on port 8000 on the IP address 127.0.0.1. You can pass in an
249 IP address and port number explicitly.
251 If you run this script as a user with normal privileges (recommended), you
252 might not have access to start a port on a low port number. Low port numbers
253 are reserved for the superuser (root).
255 DO NOT USE THIS SERVER IN A PRODUCTION SETTING. It has not gone through
256 security audits or performance tests. (And that's how it's gonna stay. We're in
257 the business of making Web frameworks, not Web servers, so improving this
258 server to be able to handle a production environment is outside the scope of
259 Django.)
261 The development server automatically reloads Python code for each request, as
262 needed. You don't need to restart the server for code changes to take effect.
264 When you start the server, and each time you change Python code while the
265 server is running, the server will validate all of your installed models. (See
266 the ``validate`` command below.) If the validator finds errors, it will print
267 them to standard output, but it won't stop the server.
269 You can run as many servers as you want, as long as they're on separate ports.
270 Just execute ``django-admin.py runserver`` more than once.
272 Note that the default IP address, 127.0.0.1, is not accessible from other
273 machines on your network. To make your development server viewable to other
274 machines on the network, use its own IP address (e.g. ``192.168.2.1``) or
275 ``0.0.0.0``.
277 Examples:
278 ~~~~~~~~~
280 Port 7000 on IP address 127.0.0.1::
282     django-admin.py runserver 7000
284 Port 7000 on IP address 1.2.3.4::
286     django-admin.py runserver 1.2.3.4:7000
288 Serving static files with the development server
289 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
291 By default, the development server doesn't serve any static files for your site
292 (such as CSS files, images, things under ``MEDIA_ROOT_URL`` and so forth). If
293 you want to configure Django to serve static media, read the `serving static files`_
294 documentation.
296 .. _serving static files: ../static_files/
298 Turning off auto-reload
299 ~~~~~~~~~~~~~~~~~~~~~~~
301 To disable auto-reloading of code while the development server is running, use the
302 ``--noreload`` option, like so::
304     django-admin.py runserver --noreload
306 shell
307 -----
309 Starts the Python interactive interpreter.
311 Django will use IPython_, if it's installed. If you have IPython installed and
312 want to force use of the "plain" Python interpreter, use the ``--plain``
313 option, like so::
315     django-admin.py shell --plain
317 .. _IPython: http://ipython.scipy.org/
319 sql [appname appname ...]
320 -------------------------
322 Prints the CREATE TABLE SQL statements for the given appnames.
324 sqlall [appname appname ...]
325 ----------------------------
327 Prints the CREATE TABLE and initial-data SQL statements for the given appnames.
329 Refer to the description of ``sqlinitialdata`` for an explanation of how to
330 specify initial data.
332 sqlclear [appname appname ...]
333 --------------------------------------
335 Prints the DROP TABLE SQL statements for the given appnames.
337 sqlcustom [appname appname ...]
338 -------------------------------
340 Prints the custom SQL statements for the given appnames.
342 For each model in each specified app, this command looks for the file
343 ``<appname>/sql/<modelname>.sql``, where ``<appname>`` is the given appname and
344 ``<modelname>`` is the model's name in lowercase. For example, if you have an
345 app ``news`` that includes a ``Story`` model, ``sqlinitialdata`` will attempt
346 to read a file ``news/sql/story.sql`` and append it to the output of this
347 command.
349 Each of the SQL files, if given, is expected to contain valid SQL. The SQL
350 files are piped directly into the database after all of the models'
351 table-creation statements have been executed. Use this SQL hook to make any
352 table modifications, or insert any SQL functions into the database.
354 Note that the order in which the SQL files are processed is undefined.
356 sqlindexes [appname appname ...]
357 ----------------------------------------
359 Prints the CREATE INDEX SQL statements for the given appnames.
361 sqlreset [appname appname ...]
362 --------------------------------------
364 Prints the DROP TABLE SQL, then the CREATE TABLE SQL, for the given appnames.
366 sqlsequencereset [appname appname ...]
367 ----------------------------------------------
369 Prints the SQL statements for resetting PostgreSQL sequences for the given
370 appnames.
372 See http://simon.incutio.com/archive/2004/04/21/postgres for more information.
374 startapp [appname]
375 ------------------
377 Creates a Django app directory structure for the given app name in the current
378 directory.
380 startproject [projectname]
381 --------------------------
383 Creates a Django project directory structure for the given project name in the
384 current directory.
386 syncdb
387 ------
389 Creates the database tables for all apps in ``INSTALLED_APPS`` whose tables
390 have not already been created.
392 Use this command when you've added new applications to your project and want to
393 install them in the database. This includes any apps shipped with Django that
394 might be in ``INSTALLED_APPS`` by default. When you start a new project, run
395 this command to install the default apps.
397 If you're installing the ``django.contrib.auth`` application, ``syncdb`` will
398 give you the option of creating a superuser immediately.
400 ``syncdb`` will also search for and install any fixture named ``initial_data``. 
401 See the documentation for ``loaddata`` for details on the specification of 
402 fixture data files.
404 test
405 ----
407 Discover and run tests for all installed models.  See `Testing Django applications`_ for more information.
409 .. _testing django applications: ../testing/
411 validate
412 --------
414 Validates all installed models (according to the ``INSTALLED_APPS`` setting)
415 and prints validation errors to standard output.
417 Available options
418 =================
420 --settings
421 ----------
423 Example usage::
425     django-admin.py syncdb --settings=mysite.settings
427 Explicitly specifies the settings module to use. The settings module should be
428 in Python package syntax, e.g. ``mysite.settings``. If this isn't provided,
429 ``django-admin.py`` will use the ``DJANGO_SETTINGS_MODULE`` environment
430 variable.
432 Note that this option is unnecessary in ``manage.py``, because it takes care of
433 setting ``DJANGO_SETTINGS_MODULE`` for you.
435 --pythonpath
436 ------------
438 Example usage::
440     django-admin.py syncdb --pythonpath='/home/djangoprojects/myproject'
442 Adds the given filesystem path to the Python `import search path`_. If this
443 isn't provided, ``django-admin.py`` will use the ``PYTHONPATH`` environment
444 variable.
446 Note that this option is unnecessary in ``manage.py``, because it takes care of
447 setting the Python path for you.
449 .. _import search path: http://diveintopython.org/getting_to_know_python/everything_is_an_object.html
451 --format
452 --------
454 Example usage::
456     django-admin.py dumpdata --format=xml
458 Specifies the output format that will be used. The name provided must be the name
459 of a registered serializer.
461 --help
462 ------
464 Displays a help message that includes a terse list of all available actions and
465 options.
467 --indent
468 --------
470 Example usage::
472     django-admin.py dumpdata --indent=4
474 Specifies the number of spaces that will be used for indentation when 
475 pretty-printing output. By default, output will *not* be pretty-printed.
476 Pretty-printing will only be enabled if the indent option is provided.
478 --noinput
479 ---------
481 Inform django-admin that the user should NOT be prompted for any input. Useful
482 if the django-admin script will be executed as an unattended, automated
483 script.
485 --noreload
486 ----------
488 Disable the use of the auto-reloader when running the development server.
490 --version
491 ---------
493 Displays the current Django version.
495 Example output::
497     0.9.1
498     0.9.1 (SVN)
500 --verbosity
501 -----------
503 Example usage::
505     django-admin.py syncdb --verbosity=2
507 Verbosity determines the amount of notification and debug information that
508 will be printed to the console. '0' is no output, '1' is normal output,
509 and `2` is verbose output.
511 --adminmedia
512 ------------
514 Example usage::
515     django-admin.py manage.py --adminmedia=/tmp/new-admin-style/
517 Tells Django where to find the various CSS and JavaScript files for the admin
518 interface when running the development server. Normally these files are served
519 out of the Django source tree, but because some designers customize these files
520 for their site, this option allows you to test against custom versions.
522 Extra niceties
523 ==============
525 Syntax coloring
526 ---------------
528 The ``django-admin.py`` / ``manage.py`` commands that output SQL to standard
529 output will use pretty color-coded output if your terminal supports
530 ANSI-colored output. It won't use the color codes if you're piping the
531 command's output to another program.
533 Bash completion
534 ---------------
536 If you use the Bash shell, consider installing the Django bash completion
537 script, which lives in ``extras/django_bash_completion`` in the Django
538 distribution. It enables tab-completion of ``django-admin.py`` and
539 ``manage.py`` commands, so you can, for instance...
541     * Type ``django-admin.py``.
542     * Press [TAB] to see all available options.
543     * Type ``sql``, then [TAB], to see all available options whose names start
544       with ``sql``.