123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760 |
- ========
- Settings
- ========
- .. contents::
- :local:
- :depth: 1
- .. warning::
- Be careful when you override settings, especially when the default value
- is a non-empty tuple or dictionary, such as :setting:`MIDDLEWARE_CLASSES`
- and :setting:`TEMPLATE_CONTEXT_PROCESSORS`. Make sure you keep the
- components required by the features of Django you wish to use.
- Core settings
- =============
- Here's a list of settings available in Django core and their default values.
- Settings provided by contrib apps are listed below, followed by a topical index
- of the core settings.
- .. setting:: ABSOLUTE_URL_OVERRIDES
- ABSOLUTE_URL_OVERRIDES
- ----------------------
- Default: ``{}`` (Empty dictionary)
- A dictionary mapping ``"app_label.model_name"`` strings to functions that take
- a model object and return its URL. This is a way of overriding
- ``get_absolute_url()`` methods on a per-installation basis. Example::
- ABSOLUTE_URL_OVERRIDES = {
- 'blogs.weblog': lambda o: "/blogs/%s/" % o.slug,
- 'news.story': lambda o: "/stories/%s/%s/" % (o.pub_year, o.slug),
- }
- Note that the model name used in this setting should be all lower-case, regardless
- of the case of the actual model class name.
- .. setting:: ADMINS
- ADMINS
- ------
- Default: ``()`` (Empty tuple)
- A tuple that lists people who get code error notifications. When
- ``DEBUG=False`` and a view raises an exception, Django will email these people
- with the full exception information. Each member of the tuple should be a tuple
- of (Full name, email address). Example::
- (('John', 'john@example.com'), ('Mary', 'mary@example.com'))
- Note that Django will email *all* of these people whenever an error happens.
- See :doc:`/howto/error-reporting` for more information.
- .. setting:: ALLOWED_HOSTS
- ALLOWED_HOSTS
- -------------
- Default: ``[]`` (Empty list)
- A list of strings representing the host/domain names that this Django site can
- serve. This is a security measure to prevent an attacker from poisoning caches
- and password reset emails with links to malicious hosts by submitting requests
- with a fake HTTP ``Host`` header, which is possible even under many
- seemingly-safe web server configurations.
- Values in this list can be fully qualified names (e.g. ``'www.example.com'``),
- in which case they will be matched against the request's ``Host`` header
- exactly (case-insensitive, not including port). A value beginning with a period
- can be used as a subdomain wildcard: ``'.example.com'`` will match
- ``example.com``, ``www.example.com``, and any other subdomain of
- ``example.com``. A value of ``'*'`` will match anything; in this case you are
- responsible to provide your own validation of the ``Host`` header (perhaps in a
- middleware; if so this middleware must be listed first in
- :setting:`MIDDLEWARE_CLASSES`).
- .. note::
- If you want to also allow the `fully qualified domain name (FQDN)`_, which
- some browsers can send in the Host header, you must explicitly add another
- ALLOWED_HOSTS entry that includes a trailing period. This entry can also be
- a subdomain wildcard::
- ALLOWED_HOSTS = [
- '.example.com', # Allow domain and subdomains
- '.example.com.', # Also allow FQDN and subdomains
- ]
- .. _`fully qualified domain name (FQDN)`: http://en.wikipedia.org/wiki/Fully_qualified_domain_name
- If the ``Host`` header (or ``X-Forwarded-Host`` if
- :setting:`USE_X_FORWARDED_HOST` is enabled) does not match any value in this
- list, the :meth:`django.http.HttpRequest.get_host()` method will raise
- :exc:`~django.core.exceptions.SuspiciousOperation`.
- When :setting:`DEBUG` is ``True`` or when running tests, host validation is
- disabled; any host will be accepted. Thus it's usually only necessary to set it
- in production.
- This validation only applies via :meth:`~django.http.HttpRequest.get_host()`;
- if your code accesses the ``Host`` header directly from ``request.META`` you
- are bypassing this security protection.
- .. setting:: ALLOWED_INCLUDE_ROOTS
- ALLOWED_INCLUDE_ROOTS
- ---------------------
- Default: ``()`` (Empty tuple)
- A tuple of strings representing allowed prefixes for the ``{% ssi %}`` template
- tag. This is a security measure, so that template authors can't access files
- that they shouldn't be accessing.
- For example, if :setting:`ALLOWED_INCLUDE_ROOTS` is ``('/home/html', '/var/www')``,
- then ``{% ssi /home/html/foo.txt %}`` would work, but ``{% ssi /etc/passwd %}``
- wouldn't.
- .. setting:: APPEND_SLASH
- APPEND_SLASH
- ------------
- Default: ``True``
- When set to ``True``, if the request URL does not match any of the patterns
- in the URLconf and it doesn't end in a slash, an HTTP redirect is issued to the
- same URL with a slash appended. Note that the redirect may cause any data
- submitted in a POST request to be lost.
- The :setting:`APPEND_SLASH` setting is only used if
- :class:`~django.middleware.common.CommonMiddleware` is installed
- (see :doc:`/topics/http/middleware`). See also :setting:`PREPEND_WWW`.
- .. setting:: CACHES
- CACHES
- ------
- Default::
- {
- 'default': {
- 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
- }
- }
- A dictionary containing the settings for all caches to be used with
- Django. It is a nested dictionary whose contents maps cache aliases
- to a dictionary containing the options for an individual cache.
- The :setting:`CACHES` setting must configure a ``default`` cache;
- any number of additional caches may also be specified. If you
- are using a cache backend other than the local memory cache, or
- you need to define multiple caches, other options will be required.
- The following cache options are available.
- .. setting:: CACHES-BACKEND
- BACKEND
- ~~~~~~~
- Default: ``''`` (Empty string)
- The cache backend to use. The built-in cache backends are:
- * ``'django.core.cache.backends.db.DatabaseCache'``
- * ``'django.core.cache.backends.dummy.DummyCache'``
- * ``'django.core.cache.backends.filebased.FileBasedCache'``
- * ``'django.core.cache.backends.locmem.LocMemCache'``
- * ``'django.core.cache.backends.memcached.MemcachedCache'``
- * ``'django.core.cache.backends.memcached.PyLibMCCache'``
- You can use a cache backend that doesn't ship with Django by setting
- :setting:`BACKEND <CACHES-BACKEND>` to a fully-qualified path of a cache
- backend class (i.e. ``mypackage.backends.whatever.WhateverCache``).
- Writing a whole new cache backend from scratch is left as an exercise
- to the reader; see the other backends for examples.
- .. setting:: CACHES-KEY_FUNCTION
- KEY_FUNCTION
- ~~~~~~~~~~~~
- A string containing a dotted path to a function that defines how to
- compose a prefix, version and key into a final cache key. The default
- implementation is equivalent to the function::
- def make_key(key, key_prefix, version):
- return ':'.join([key_prefix, str(version), key])
- You may use any key function you want, as long as it has the same
- argument signature.
- See the :ref:`cache documentation <cache_key_transformation>` for more
- information.
- .. setting:: CACHES-KEY_PREFIX
- KEY_PREFIX
- ~~~~~~~~~~
- Default: ``''`` (Empty string)
- A string that will be automatically included (prepended by default) to
- all cache keys used by the Django server.
- See the :ref:`cache documentation <cache_key_prefixing>` for more information.
- .. setting:: CACHES-LOCATION
- LOCATION
- ~~~~~~~~
- Default: ``''`` (Empty string)
- The location of the cache to use. This might be the directory for a
- file system cache, a host and port for a memcache server, or simply an
- identifying name for a local memory cache. e.g.::
- CACHES = {
- 'default': {
- 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
- 'LOCATION': '/var/tmp/django_cache',
- }
- }
- .. setting:: CACHES-OPTIONS
- OPTIONS
- ~~~~~~~
- Default: None
- Extra parameters to pass to the cache backend. Available parameters
- vary depending on your cache backend.
- Some information on available parameters can be found in the
- :doc:`Cache Backends </topics/cache>` documentation. For more information,
- consult your backend module's own documentation.
- .. setting:: CACHES-TIMEOUT
- TIMEOUT
- ~~~~~~~
- Default: 300
- The number of seconds before a cache entry is considered stale.
- .. setting:: CACHES-VERSION
- VERSION
- ~~~~~~~
- Default: ``1``
- The default version number for cache keys generated by the Django server.
- See the :ref:`cache documentation <cache_versioning>` for more information.
- .. setting:: CACHE_MIDDLEWARE_ALIAS
- CACHE_MIDDLEWARE_ALIAS
- ----------------------
- Default: ``default``
- The cache connection to use for the cache middleware.
- .. setting:: CACHE_MIDDLEWARE_ANONYMOUS_ONLY
- CACHE_MIDDLEWARE_ANONYMOUS_ONLY
- -------------------------------
- Default: ``False``
- .. deprecated:: 1.6
- This setting was largely ineffective because of using cookies for sessions
- and CSRF. See the :doc:`Django 1.6 release notes</releases/1.6>` for more
- information.
- If the value of this setting is ``True``, only anonymous requests (i.e., not
- those made by a logged-in user) will be cached. Otherwise, the middleware
- caches every page that doesn't have GET or POST parameters.
- If you set the value of this setting to ``True``, you should make sure you've
- activated ``AuthenticationMiddleware``.
- .. setting:: CACHE_MIDDLEWARE_KEY_PREFIX
- CACHE_MIDDLEWARE_KEY_PREFIX
- ---------------------------
- Default: ``''`` (Empty string)
- The cache key prefix that the cache middleware should use.
- See :doc:`/topics/cache`.
- .. setting:: CACHE_MIDDLEWARE_SECONDS
- CACHE_MIDDLEWARE_SECONDS
- ------------------------
- Default: ``600``
- The default number of seconds to cache a page when the caching middleware or
- ``cache_page()`` decorator is used.
- See :doc:`/topics/cache`.
- .. _settings-csrf:
- .. setting:: CSRF_COOKIE_DOMAIN
- CSRF_COOKIE_DOMAIN
- ------------------
- Default: ``None``
- The domain to be used when setting the CSRF cookie. This can be useful for
- easily allowing cross-subdomain requests to be excluded from the normal cross
- site request forgery protection. It should be set to a string such as
- ``".example.com"`` to allow a POST request from a form on one subdomain to be
- accepted by a view served from another subdomain.
- Please note that the presence of this setting does not imply that Django's CSRF
- protection is safe from cross-subdomain attacks by default - please see the
- :ref:`CSRF limitations <csrf-limitations>` section.
- .. setting:: CSRF_COOKIE_HTTPONLY
- CSRF_COOKIE_HTTPONLY
- --------------------
- .. versionadded:: 1.6
- Default: ``False``
- Whether to use ``HttpOnly`` flag on the CSRF cookie. If this is set to
- ``True``, client-side JavaScript will not to be able to access the CSRF cookie.
- See :setting:`SESSION_COOKIE_HTTPONLY` for details on ``HttpOnly``.
- .. setting:: CSRF_COOKIE_NAME
- CSRF_COOKIE_NAME
- ----------------
- Default: ``'csrftoken'``
- The name of the cookie to use for the CSRF authentication token. This can be whatever you
- want. See :doc:`/ref/contrib/csrf`.
- .. setting:: CSRF_COOKIE_PATH
- CSRF_COOKIE_PATH
- ----------------
- Default: ``'/'``
- The path set on the CSRF cookie. This should either match the URL path of your
- Django installation or be a parent of that path.
- This is useful if you have multiple Django instances running under the same
- hostname. They can use different cookie paths, and each instance will only see
- its own CSRF cookie.
- .. setting:: CSRF_COOKIE_SECURE
- CSRF_COOKIE_SECURE
- ------------------
- Default: ``False``
- Whether to use a secure cookie for the CSRF cookie. If this is set to ``True``,
- the cookie will be marked as "secure," which means browsers may ensure that the
- cookie is only sent under an HTTPS connection.
- .. setting:: CSRF_FAILURE_VIEW
- CSRF_FAILURE_VIEW
- -----------------
- Default: ``'django.views.csrf.csrf_failure'``
- A dotted path to the view function to be used when an incoming request
- is rejected by the CSRF protection. The function should have this signature::
- def csrf_failure(request, reason="")
- where ``reason`` is a short message (intended for developers or logging, not for
- end users) indicating the reason the request was rejected. See
- :doc:`/ref/contrib/csrf`.
- .. setting:: DATABASES
- DATABASES
- ---------
- Default: ``{}`` (Empty dictionary)
- A dictionary containing the settings for all databases to be used with
- Django. It is a nested dictionary whose contents maps database aliases
- to a dictionary containing the options for an individual database.
- The :setting:`DATABASES` setting must configure a ``default`` database;
- any number of additional databases may also be specified.
- The simplest possible settings file is for a single-database setup using
- SQLite. This can be configured using the following::
- DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.sqlite3',
- 'NAME': 'mydatabase'
- }
- }
- For other database backends, or more complex SQLite configurations, other options
- will be required. The following inner options are available.
- .. setting:: DATABASE-ATOMIC_REQUESTS
- ATOMIC_REQUESTS
- ~~~~~~~~~~~~~~~
- .. versionadded:: 1.6
- Default: ``False``
- Set this to ``True`` to wrap each HTTP request in a transaction on this
- database. See :ref:`tying-transactions-to-http-requests`.
- .. setting:: DATABASE-AUTOCOMMIT
- AUTOCOMMIT
- ~~~~~~~~~~
- .. versionadded:: 1.6
- Default: ``True``
- Set this to ``False`` if you want to :ref:`disable Django's transaction
- management <deactivate-transaction-management>` and implement your own.
- .. setting:: DATABASE-ENGINE
- ENGINE
- ~~~~~~
- Default: ``''`` (Empty string)
- The database backend to use. The built-in database backends are:
- * ``'django.db.backends.postgresql_psycopg2'``
- * ``'django.db.backends.mysql'``
- * ``'django.db.backends.sqlite3'``
- * ``'django.db.backends.oracle'``
- You can use a database backend that doesn't ship with Django by setting
- ``ENGINE`` to a fully-qualified path (i.e.
- ``mypackage.backends.whatever``). Writing a whole new database backend from
- scratch is left as an exercise to the reader; see the other backends for
- examples.
- .. setting:: HOST
- HOST
- ~~~~
- Default: ``''`` (Empty string)
- Which host to use when connecting to the database. An empty string means
- localhost. Not used with SQLite.
- If this value starts with a forward slash (``'/'``) and you're using MySQL,
- MySQL will connect via a Unix socket to the specified socket. For example::
- "HOST": '/var/run/mysql'
- If you're using MySQL and this value *doesn't* start with a forward slash, then
- this value is assumed to be the host.
- If you're using PostgreSQL, by default (empty :setting:`HOST`), the connection
- to the database is done through UNIX domain sockets ('local' lines in
- ``pg_hba.conf``). If you want to connect through TCP sockets, set
- :setting:`HOST` to 'localhost' or '127.0.0.1' ('host' lines in ``pg_hba.conf``).
- On Windows, you should always define :setting:`HOST`, as UNIX domain sockets
- are not available.
- .. setting:: NAME
- NAME
- ~~~~
- Default: ``''`` (Empty string)
- The name of the database to use. For SQLite, it's the full path to the database
- file. When specifying the path, always use forward slashes, even on Windows
- (e.g. ``C:/homes/user/mysite/sqlite3.db``).
- .. setting:: CONN_MAX_AGE
- CONN_MAX_AGE
- ~~~~~~~~~~~~
- .. versionadded:: 1.6
- Default: ``0``
- The lifetime of a database connection, in seconds. Use ``0`` to close database
- connections at the end of each request — Django's historical behavior — and
- ``None`` for unlimited persistent connections.
- .. setting:: OPTIONS
- OPTIONS
- ~~~~~~~
- Default: ``{}`` (Empty dictionary)
- Extra parameters to use when connecting to the database. Available parameters
- vary depending on your database backend.
- Some information on available parameters can be found in the
- :doc:`Database Backends </ref/databases>` documentation. For more information,
- consult your backend module's own documentation.
- .. setting:: PASSWORD
- PASSWORD
- ~~~~~~~~
- Default: ``''`` (Empty string)
- The password to use when connecting to the database. Not used with SQLite.
- .. setting:: PORT
- PORT
- ~~~~
- Default: ``''`` (Empty string)
- The port to use when connecting to the database. An empty string means the
- default port. Not used with SQLite.
- .. setting:: USER
- USER
- ~~~~
- Default: ``''`` (Empty string)
- The username to use when connecting to the database. Not used with SQLite.
- .. setting:: TEST_CHARSET
- TEST_CHARSET
- ~~~~~~~~~~~~
- Default: ``None``
- The character set encoding used to create the test database. The value of this
- string is passed directly through to the database, so its format is
- backend-specific.
- Supported for the PostgreSQL_ (``postgresql_psycopg2``) and MySQL_ (``mysql``)
- backends.
- .. _PostgreSQL: http://www.postgresql.org/docs/current/static/multibyte.html
- .. _MySQL: http://dev.mysql.com/doc/refman/5.0/en/charset-database.html
- .. setting:: TEST_COLLATION
- TEST_COLLATION
- ~~~~~~~~~~~~~~
- Default: ``None``
- The collation order to use when creating the test database. This value is
- passed directly to the backend, so its format is backend-specific.
- Only supported for the ``mysql`` backend (see the `MySQL manual`_ for details).
- .. _MySQL manual: MySQL_
- .. setting:: TEST_DEPENDENCIES
- TEST_DEPENDENCIES
- ~~~~~~~~~~~~~~~~~
- Default: ``['default']``, for all databases other than ``default``,
- which has no dependencies.
- The creation-order dependencies of the database. See the documentation
- on :ref:`controlling the creation order of test databases
- <topics-testing-creation-dependencies>` for details.
- .. setting:: TEST_MIRROR
- TEST_MIRROR
- ~~~~~~~~~~~
- Default: ``None``
- The alias of the database that this database should mirror during
- testing.
- This setting exists to allow for testing of master/slave
- configurations of multiple databases. See the documentation on
- :ref:`testing master/slave configurations
- <topics-testing-masterslave>` for details.
- .. setting:: TEST_NAME
- TEST_NAME
- ~~~~~~~~~
- Default: ``None``
- The name of database to use when running the test suite.
- If the default value (``None``) is used with the SQLite database engine, the
- tests will use a memory resident database. For all other database engines the
- test database will use the name ``'test_' + DATABASE_NAME``.
- See :ref:`the-test-database`.
- .. setting:: TEST_CREATE
- TEST_CREATE
- ~~~~~~~~~~~
- Default: ``True``
- This is an Oracle-specific setting.
- If it is set to ``False``, the test tablespaces won't be automatically created
- at the beginning of the tests and dropped at the end.
- .. setting:: TEST_USER
- TEST_USER
- ~~~~~~~~~
- Default: ``None``
- This is an Oracle-specific setting.
- The username to use when connecting to the Oracle database that will be used
- when running tests. If not provided, Django will use ``'test_' + USER``.
- .. setting:: TEST_USER_CREATE
- TEST_USER_CREATE
- ~~~~~~~~~~~~~~~~
- Default: ``True``
- This is an Oracle-specific setting.
- If it is set to ``False``, the test user won't be automatically created at the
- beginning of the tests and dropped at the end.
- .. setting:: TEST_PASSWD
- TEST_PASSWD
- ~~~~~~~~~~~
- Default: ``None``
- This is an Oracle-specific setting.
- The password to use when connecting to the Oracle database that will be used
- when running tests. If not provided, Django will use a hardcoded default value.
- .. setting:: TEST_TBLSPACE
- TEST_TBLSPACE
- ~~~~~~~~~~~~~
- Default: ``None``
- This is an Oracle-specific setting.
- The name of the tablespace that will be used when running tests. If not
- provided, Django will use ``'test_' + NAME``.
- .. setting:: TEST_TBLSPACE_TMP
- TEST_TBLSPACE_TMP
- ~~~~~~~~~~~~~~~~~
- Default: ``None``
- This is an Oracle-specific setting.
- The name of the temporary tablespace that will be used when running tests. If
- not provided, Django will use ``'test_' + NAME + '_temp'``.
- .. setting:: DATABASE_ROUTERS
- DATABASE_ROUTERS
- ----------------
- Default: ``[]`` (Empty list)
- The list of routers that will be used to determine which database
- to use when performing a database queries.
- See the documentation on :ref:`automatic database routing in multi
- database configurations <topics-db-multi-db-routing>`.
- .. setting:: DATE_FORMAT
- DATE_FORMAT
- -----------
- Default: ``'N j, Y'`` (e.g. ``Feb. 4, 2003``)
- The default formatting to use for displaying date fields in any part of the
- system. Note that if :setting:`USE_L10N` is set to ``True``, then the
- locale-dictated format has higher precedence and will be applied instead. See
- :tfilter:`allowed date format strings <date>`.
- See also :setting:`DATETIME_FORMAT`, :setting:`TIME_FORMAT` and :setting:`SHORT_DATE_FORMAT`.
- .. setting:: DATE_INPUT_FORMATS
- DATE_INPUT_FORMATS
- ------------------
- Default::
- (
- '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'
- '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006'
- '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006'
- '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006'
- '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006'
- )
- A tuple of formats that will be accepted when inputting data on a date field.
- Formats will be tried in order, using the first valid one. Note that these
- format strings use Python's datetime_ module syntax, not the format strings
- from the ``date`` Django template tag.
- When :setting:`USE_L10N` is ``True``, the locale-dictated format has higher
- precedence and will be applied instead.
- See also :setting:`DATETIME_INPUT_FORMATS` and :setting:`TIME_INPUT_FORMATS`.
- .. _datetime: http://docs.python.org/library/datetime.html#strftime-strptime-behavior
- .. setting:: DATETIME_FORMAT
- DATETIME_FORMAT
- ---------------
- Default: ``'N j, Y, P'`` (e.g. ``Feb. 4, 2003, 4 p.m.``)
- The default formatting to use for displaying datetime fields in any part of the
- system. Note that if :setting:`USE_L10N` is set to ``True``, then the
- locale-dictated format has higher precedence and will be applied instead. See
- :tfilter:`allowed date format strings <date>`.
- See also :setting:`DATE_FORMAT`, :setting:`TIME_FORMAT` and :setting:`SHORT_DATETIME_FORMAT`.
- .. setting:: DATETIME_INPUT_FORMATS
- DATETIME_INPUT_FORMATS
- ----------------------
- Default::
- (
- '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
- '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
- '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
- '%Y-%m-%d', # '2006-10-25'
- '%m/%d/%Y %H:%M:%S', # '10/25/2006 14:30:59'
- '%m/%d/%Y %H:%M:%S.%f', # '10/25/2006 14:30:59.000200'
- '%m/%d/%Y %H:%M', # '10/25/2006 14:30'
- '%m/%d/%Y', # '10/25/2006'
- '%m/%d/%y %H:%M:%S', # '10/25/06 14:30:59'
- '%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200'
- '%m/%d/%y %H:%M', # '10/25/06 14:30'
- '%m/%d/%y', # '10/25/06'
- )
- A tuple of formats that will be accepted when inputting data on a datetime
- field. Formats will be tried in order, using the first valid one. Note that
- these format strings use Python's datetime_ module syntax, not the format
- strings from the ``date`` Django template tag.
- When :setting:`USE_L10N` is ``True``, the locale-dictated format has higher
- precedence and will be applied instead.
- See also :setting:`DATE_INPUT_FORMATS` and :setting:`TIME_INPUT_FORMATS`.
- .. _datetime: http://docs.python.org/library/datetime.html#strftime-strptime-behavior
- .. setting:: DEBUG
- DEBUG
- -----
- Default: ``False``
- A boolean that turns on/off debug mode.
- Never deploy a site into production with :setting:`DEBUG` turned on.
- Did you catch that? NEVER deploy a site into production with :setting:`DEBUG`
- turned on.
- One of the main features of debug mode is the display of detailed error pages.
- If your app raises an exception when :setting:`DEBUG` is ``True``, Django will
- display a detailed traceback, including a lot of metadata about your
- environment, such as all the currently defined Django settings (from
- ``settings.py``).
- As a security measure, Django will *not* include settings that might be
- sensitive (or offensive), such as :setting:`SECRET_KEY` or
- :setting:`PROFANITIES_LIST`. Specifically, it will exclude any setting whose
- name includes any of the following:
- * ``'API'``
- * ``'KEY'``
- * ``'PASS'``
- * ``'PROFANITIES_LIST'``
- * ``'SECRET'``
- * ``'SIGNATURE'``
- * ``'TOKEN'``
- Note that these are *partial* matches. ``'PASS'`` will also match PASSWORD,
- just as ``'TOKEN'`` will also match TOKENIZED and so on.
- Still, note that there are always going to be sections of your debug output
- that are inappropriate for public consumption. File paths, configuration
- options and the like all give attackers extra information about your server.
- It is also important to remember that when running with :setting:`DEBUG`
- turned on, Django will remember every SQL query it executes. This is useful
- when you're debugging, but it'll rapidly consume memory on a production server.
- Finally, if :setting:`DEBUG` is ``False``, you also need to properly set
- the :setting:`ALLOWED_HOSTS` setting. Failing to do so will result in all
- requests being returned as "Bad Request (400)".
- .. _django/views/debug.py: https://github.com/django/django/blob/master/django/views/debug.py
- .. setting:: DEBUG_PROPAGATE_EXCEPTIONS
- DEBUG_PROPAGATE_EXCEPTIONS
- --------------------------
- Default: ``False``
- If set to True, Django's normal exception handling of view functions
- will be suppressed, and exceptions will propagate upwards. This can
- be useful for some test setups, and should never be used on a live
- site.
- .. setting:: DECIMAL_SEPARATOR
- DECIMAL_SEPARATOR
- -----------------
- Default: ``'.'`` (Dot)
- Default decimal separator used when formatting decimal numbers.
- Note that if :setting:`USE_L10N` is set to ``True``, then the locale-dictated
- format has higher precedence and will be applied instead.
- See also :setting:`NUMBER_GROUPING`, :setting:`THOUSAND_SEPARATOR` and
- :setting:`USE_THOUSAND_SEPARATOR`.
- .. setting:: DEFAULT_CHARSET
- DEFAULT_CHARSET
- ---------------
- Default: ``'utf-8'``
- Default charset to use for all ``HttpResponse`` objects, if a MIME type isn't
- manually specified. Used with :setting:`DEFAULT_CONTENT_TYPE` to construct the
- ``Content-Type`` header.
- .. setting:: DEFAULT_CONTENT_TYPE
- DEFAULT_CONTENT_TYPE
- --------------------
- Default: ``'text/html'``
- Default content type to use for all ``HttpResponse`` objects, if a MIME type
- isn't manually specified. Used with :setting:`DEFAULT_CHARSET` to construct
- the ``Content-Type`` header.
- .. setting:: DEFAULT_EXCEPTION_REPORTER_FILTER
- DEFAULT_EXCEPTION_REPORTER_FILTER
- ---------------------------------
- Default: :class:`django.views.debug.SafeExceptionReporterFilter`
- Default exception reporter filter class to be used if none has been assigned to
- the :class:`~django.http.HttpRequest` instance yet.
- See :ref:`Filtering error reports<filtering-error-reports>`.
- .. setting:: DEFAULT_FILE_STORAGE
- DEFAULT_FILE_STORAGE
- --------------------
- Default: :class:`django.core.files.storage.FileSystemStorage`
- Default file storage class to be used for any file-related operations that don't
- specify a particular storage system. See :doc:`/topics/files`.
- .. setting:: DEFAULT_FROM_EMAIL
- DEFAULT_FROM_EMAIL
- ------------------
- Default: ``'webmaster@localhost'``
- Default email address to use for various automated correspondence from the
- site manager(s).
- .. setting:: DEFAULT_INDEX_TABLESPACE
- DEFAULT_INDEX_TABLESPACE
- ------------------------
- Default: ``''`` (Empty string)
- Default tablespace to use for indexes on fields that don't specify
- one, if the backend supports it (see :doc:`/topics/db/tablespaces`).
- .. setting:: DEFAULT_TABLESPACE
- DEFAULT_TABLESPACE
- ------------------
- Default: ``''`` (Empty string)
- Default tablespace to use for models that don't specify one, if the
- backend supports it (see :doc:`/topics/db/tablespaces`).
- .. setting:: DISALLOWED_USER_AGENTS
- DISALLOWED_USER_AGENTS
- ----------------------
- Default: ``()`` (Empty tuple)
- List of compiled regular expression objects representing User-Agent strings that
- are not allowed to visit any page, systemwide. Use this for bad robots/crawlers.
- This is only used if ``CommonMiddleware`` is installed (see
- :doc:`/topics/http/middleware`).
- .. setting:: EMAIL_BACKEND
- EMAIL_BACKEND
- -------------
- Default: ``'django.core.mail.backends.smtp.EmailBackend'``
- The backend to use for sending emails. For the list of available backends see
- :doc:`/topics/email`.
- .. setting:: EMAIL_FILE_PATH
- EMAIL_FILE_PATH
- ---------------
- Default: Not defined
- The directory used by the ``file`` email backend to store output files.
- .. setting:: EMAIL_HOST
- EMAIL_HOST
- ----------
- Default: ``'localhost'``
- The host to use for sending email.
- See also :setting:`EMAIL_PORT`.
- .. setting:: EMAIL_HOST_PASSWORD
- EMAIL_HOST_PASSWORD
- -------------------
- Default: ``''`` (Empty string)
- Password to use for the SMTP server defined in :setting:`EMAIL_HOST`. This
- setting is used in conjunction with :setting:`EMAIL_HOST_USER` when
- authenticating to the SMTP server. If either of these settings is empty,
- Django won't attempt authentication.
- See also :setting:`EMAIL_HOST_USER`.
- .. setting:: EMAIL_HOST_USER
- EMAIL_HOST_USER
- ---------------
- Default: ``''`` (Empty string)
- Username to use for the SMTP server defined in :setting:`EMAIL_HOST`.
- If empty, Django won't attempt authentication.
- See also :setting:`EMAIL_HOST_PASSWORD`.
- .. setting:: EMAIL_PORT
- EMAIL_PORT
- ----------
- Default: ``25``
- Port to use for the SMTP server defined in :setting:`EMAIL_HOST`.
- .. setting:: EMAIL_SUBJECT_PREFIX
- EMAIL_SUBJECT_PREFIX
- --------------------
- Default: ``'[Django] '``
- Subject-line prefix for email messages sent with ``django.core.mail.mail_admins``
- or ``django.core.mail.mail_managers``. You'll probably want to include the
- trailing space.
- .. setting:: EMAIL_USE_TLS
- EMAIL_USE_TLS
- -------------
- Default: ``False``
- Whether to use a TLS (secure) connection when talking to the SMTP server.
- This is used for explicit TLS connections, generally on port 587. If you are
- experiencing hanging connections, see the implicit TLS setting
- :setting:`EMAIL_USE_SSL`.
- .. setting:: EMAIL_USE_SSL
- EMAIL_USE_SSL
- -------------
- .. versionadded:: 1.7
- Default: ``False``
- Whether to use an implicit TLS (secure) connection when talking to the SMTP
- server. In most email documentation this type of TLS connection is referred
- to as SSL. It is generally used on port 465. If you are experiencing problems,
- see the explicit TLS setting :setting:`EMAIL_USE_TLS`.
- Note that :setting:`EMAIL_USE_TLS`/:setting:`EMAIL_USE_SSL` are mutually
- exclusive, so only set one of those settings to ``True``.
- .. setting:: FILE_CHARSET
- FILE_CHARSET
- ------------
- Default: ``'utf-8'``
- The character encoding used to decode any files read from disk. This includes
- template files and initial SQL data files.
- .. setting:: FILE_UPLOAD_HANDLERS
- FILE_UPLOAD_HANDLERS
- --------------------
- Default::
- ("django.core.files.uploadhandler.MemoryFileUploadHandler",
- "django.core.files.uploadhandler.TemporaryFileUploadHandler",)
- A tuple of handlers to use for uploading. See :doc:`/topics/files` for details.
- .. setting:: FILE_UPLOAD_MAX_MEMORY_SIZE
- FILE_UPLOAD_MAX_MEMORY_SIZE
- ---------------------------
- Default: ``2621440`` (i.e. 2.5 MB).
- The maximum size (in bytes) that an upload will be before it gets streamed to
- the file system. See :doc:`/topics/files` for details.
- .. setting:: FILE_UPLOAD_PERMISSIONS
- FILE_UPLOAD_PERMISSIONS
- -----------------------
- Default: ``None``
- The numeric mode (i.e. ``0644``) to set newly uploaded files to. For
- more information about what these modes mean, see the documentation for
- :func:`os.chmod`.
- If this isn't given or is ``None``, you'll get operating-system
- dependent behavior. On most platforms, temporary files will have a mode
- of ``0600``, and files saved from memory will be saved using the
- system's standard umask.
- .. warning::
- **Always prefix the mode with a 0.**
- If you're not familiar with file modes, please note that the leading
- ``0`` is very important: it indicates an octal number, which is the
- way that modes must be specified. If you try to use ``644``, you'll
- get totally incorrect behavior.
- .. setting:: FILE_UPLOAD_TEMP_DIR
- FILE_UPLOAD_TEMP_DIR
- --------------------
- Default: ``None``
- The directory to store data temporarily while uploading files. If ``None``,
- Django will use the standard temporary directory for the operating system. For
- example, this will default to '/tmp' on \*nix-style operating systems.
- See :doc:`/topics/files` for details.
- .. setting:: FIRST_DAY_OF_WEEK
- FIRST_DAY_OF_WEEK
- -----------------
- Default: ``0`` (Sunday)
- Number representing the first day of the week. This is especially useful
- when displaying a calendar. This value is only used when not using
- format internationalization, or when a format cannot be found for the
- current locale.
- The value must be an integer from 0 to 6, where 0 means Sunday, 1 means
- Monday and so on.
- .. setting:: FIXTURE_DIRS
- FIXTURE_DIRS
- -------------
- Default: ``()`` (Empty tuple)
- List of directories searched for fixture files, in addition to the
- ``fixtures`` directory of each application, in search order.
- Note that these paths should use Unix-style forward slashes, even on Windows.
- See :ref:`initial-data-via-fixtures` and :ref:`topics-testing-fixtures`.
- .. setting:: FORCE_SCRIPT_NAME
- FORCE_SCRIPT_NAME
- ------------------
- Default: ``None``
- If not ``None``, this will be used as the value of the ``SCRIPT_NAME``
- environment variable in any HTTP request. This setting can be used to override
- the server-provided value of ``SCRIPT_NAME``, which may be a rewritten version
- of the preferred value or not supplied at all.
- .. setting:: FORMAT_MODULE_PATH
- FORMAT_MODULE_PATH
- ------------------
- Default: ``None``
- A full Python path to a Python package that contains format definitions for
- project locales. If not ``None``, Django will check for a ``formats.py``
- file, under the directory named as the current locale, and will use the
- formats defined on this file.
- For example, if :setting:`FORMAT_MODULE_PATH` is set to ``mysite.formats``,
- and current language is ``en`` (English), Django will expect a directory tree
- like::
- mysite/
- formats/
- __init__.py
- en/
- __init__.py
- formats.py
- Available formats are :setting:`DATE_FORMAT`, :setting:`TIME_FORMAT`,
- :setting:`DATETIME_FORMAT`, :setting:`YEAR_MONTH_FORMAT`,
- :setting:`MONTH_DAY_FORMAT`, :setting:`SHORT_DATE_FORMAT`,
- :setting:`SHORT_DATETIME_FORMAT`, :setting:`FIRST_DAY_OF_WEEK`,
- :setting:`DECIMAL_SEPARATOR`, :setting:`THOUSAND_SEPARATOR` and
- :setting:`NUMBER_GROUPING`.
- .. setting:: IGNORABLE_404_URLS
- IGNORABLE_404_URLS
- ------------------
- Default: ``()``
- List of compiled regular expression objects describing URLs that should be
- ignored when reporting HTTP 404 errors via email (see
- :doc:`/howto/error-reporting`). Regular expressions are matched against
- :meth:`request's full paths <django.http.HttpRequest.get_full_path>` (including
- query string, if any). Use this if your site does not provide a commonly
- requested file such as ``favicon.ico`` or ``robots.txt``, or if it gets
- hammered by script kiddies.
- This is only used if
- :class:`~django.middleware.common.BrokenLinkEmailsMiddleware` is enabled (see
- :doc:`/topics/http/middleware`).
- .. setting:: INSTALLED_APPS
- INSTALLED_APPS
- --------------
- Default: ``()`` (Empty tuple)
- A tuple of strings designating all applications that are enabled in this Django
- installation. Each string should be a full Python path to a Python package that
- contains a Django application, as created by :djadmin:`django-admin.py startapp
- <startapp>`.
- .. admonition:: App names must be unique
- The application names (that is, the final dotted part of the
- path to the module containing ``models.py``) defined in
- :setting:`INSTALLED_APPS` *must* be unique. For example, you can't
- include both ``django.contrib.auth`` and ``myproject.auth`` in
- INSTALLED_APPS.
- .. setting:: INTERNAL_IPS
- INTERNAL_IPS
- ------------
- Default: ``()`` (Empty tuple)
- A tuple of IP addresses, as strings, that:
- * See debug comments, when :setting:`DEBUG` is ``True``
- * Receive X headers in admindocs if the ``XViewMiddleware`` is installed (see
- :doc:`/topics/http/middleware`)
- .. setting:: LANGUAGE_CODE
- LANGUAGE_CODE
- -------------
- Default: ``'en-us'``
- A string representing the language code for this installation. This should be
- in standard :term:`language format<language code>`. For example, U.S. English
- is ``"en-us"``. See also the `list of language identifiers`_ and
- :doc:`/topics/i18n/index`.
- .. _list of language identifiers: http://www.i18nguy.com/unicode/language-identifiers.html
- .. setting:: LANGUAGE_COOKIE_NAME
- LANGUAGE_COOKIE_NAME
- --------------------
- Default: ``'django_language'``
- The name of the cookie to use for the language cookie. This can be whatever
- you want (but should be different from :setting:`SESSION_COOKIE_NAME`). See
- :doc:`/topics/i18n/index`.
- .. setting:: LANGUAGES
- LANGUAGES
- ---------
- Default: A tuple of all available languages. This list is continually growing
- and including a copy here would inevitably become rapidly out of date. You can
- see the current list of translated languages by looking in
- ``django/conf/global_settings.py`` (or view the `online source`_).
- .. _online source: https://github.com/django/django/blob/master/django/conf/global_settings.py
- The list is a tuple of two-tuples in the format
- (:term:`language code<language code>`, ``language name``) -- for example,
- ``('ja', 'Japanese')``.
- This specifies which languages are available for language selection. See
- :doc:`/topics/i18n/index`.
- Generally, the default value should suffice. Only set this setting if you want
- to restrict language selection to a subset of the Django-provided languages.
- If you define a custom :setting:`LANGUAGES` setting, it's OK to mark the
- languages as translation strings (as in the default value referred to above)
- -- but use a "dummy" ``gettext()`` function, not the one in
- ``django.utils.translation``. You should *never* import
- ``django.utils.translation`` from within your settings file, because that
- module in itself depends on the settings, and that would cause a circular
- import.
- The solution is to use a "dummy" ``gettext()`` function. Here's a sample
- settings file::
- gettext = lambda s: s
- LANGUAGES = (
- ('de', gettext('German')),
- ('en', gettext('English')),
- )
- With this arrangement, ``django-admin.py makemessages`` will still find and
- mark these strings for translation, but the translation won't happen at
- runtime -- so you'll have to remember to wrap the languages in the *real*
- ``gettext()`` in any code that uses :setting:`LANGUAGES` at runtime.
- .. setting:: LOCALE_PATHS
- LOCALE_PATHS
- ------------
- Default: ``()`` (Empty tuple)
- A tuple of directories where Django looks for translation files.
- See :ref:`how-django-discovers-translations`.
- Example::
- LOCALE_PATHS = (
- '/home/www/project/common_files/locale',
- '/var/local/translations/locale'
- )
- Django will look within each of these paths for the ``<locale_code>/LC_MESSAGES``
- directories containing the actual translation files.
- .. setting:: LOGGING
- LOGGING
- -------
- Default: A logging configuration dictionary.
- A data structure containing configuration information. The contents of
- this data structure will be passed as the argument to the
- configuration method described in :setting:`LOGGING_CONFIG`.
- Among other things, the default logging configuration passes HTTP 500 server
- errors to an email log handler when :setting:`DEBUG` is ``False``. See also
- :ref:`configuring-logging`.
- You can see the default logging configuration by looking in
- ``django/utils/log.py`` (or view the `online source`__).
- __ https://github.com/django/django/blob/master/django/utils/log.py
- .. setting:: LOGGING_CONFIG
- LOGGING_CONFIG
- --------------
- Default: ``'logging.config.dictConfig'``
- A path to a callable that will be used to configure logging in the
- Django project. Points at a instance of Python's `dictConfig`_
- configuration method by default.
- If you set :setting:`LOGGING_CONFIG` to ``None``, the logging
- configuration process will be skipped.
- .. versionchanged:: 1.7
- Previously, the default value was ``'django.utils.log.dictConfig'``.
- .. _dictConfig: http://docs.python.org/library/logging.config.html#configuration-dictionary-schema
- .. setting:: MANAGERS
- MANAGERS
- --------
- Default: ``()`` (Empty tuple)
- A tuple in the same format as :setting:`ADMINS` that specifies who should get
- broken link notifications when
- :class:`~django.middleware.common.BrokenLinkEmailsMiddleware` is enabled.
- .. setting:: MEDIA_ROOT
- MEDIA_ROOT
- ----------
- Default: ``''`` (Empty string)
- Absolute filesystem path to the directory that will hold :doc:`user-uploaded
- files </topics/files>`.
- Example: ``"/var/www/example.com/media/"``
- See also :setting:`MEDIA_URL`.
- .. setting:: MEDIA_URL
- MEDIA_URL
- ---------
- Default: ``''`` (Empty string)
- URL that handles the media served from :setting:`MEDIA_ROOT`, used
- for :doc:`managing stored files </topics/files>`. It must end in a slash if set
- to a non-empty value.
- Example: ``"http://media.example.com/"``
- .. setting:: MIDDLEWARE_CLASSES
- MIDDLEWARE_CLASSES
- ------------------
- Default::
- ('django.middleware.common.CommonMiddleware',
- 'django.contrib.sessions.middleware.SessionMiddleware',
- 'django.middleware.csrf.CsrfViewMiddleware',
- 'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django.contrib.messages.middleware.MessageMiddleware',)
- A tuple of middleware classes to use. See :doc:`/topics/http/middleware`.
- .. setting:: MONTH_DAY_FORMAT
- MONTH_DAY_FORMAT
- ----------------
- Default: ``'F j'``
- The default formatting to use for date fields on Django admin change-list
- pages -- and, possibly, by other parts of the system -- in cases when only the
- month and day are displayed.
- For example, when a Django admin change-list page is being filtered by a date
- drilldown, the header for a given day displays the day and month. Different
- locales have different formats. For example, U.S. English would say
- "January 1," whereas Spanish might say "1 Enero."
- See :tfilter:`allowed date format strings <date>`. See also
- :setting:`DATE_FORMAT`, :setting:`DATETIME_FORMAT`,
- :setting:`TIME_FORMAT` and :setting:`YEAR_MONTH_FORMAT`.
- .. setting:: NUMBER_GROUPING
- NUMBER_GROUPING
- ----------------
- Default: ``0``
- Number of digits grouped together on the integer part of a number.
- Common use is to display a thousand separator. If this setting is ``0``, then
- no grouping will be applied to the number. If this setting is greater than
- ``0``, then :setting:`THOUSAND_SEPARATOR` will be used as the separator between
- those groups.
- Note that if :setting:`USE_L10N` is set to ``True``, then the locale-dictated
- format has higher precedence and will be applied instead.
- See also :setting:`DECIMAL_SEPARATOR`, :setting:`THOUSAND_SEPARATOR` and
- :setting:`USE_THOUSAND_SEPARATOR`.
- .. setting:: PREPEND_WWW
- PREPEND_WWW
- -----------
- Default: ``False``
- Whether to prepend the "www." subdomain to URLs that don't have it. This is only
- used if :class:`~django.middleware.common.CommonMiddleware` is installed
- (see :doc:`/topics/http/middleware`). See also :setting:`APPEND_SLASH`.
- .. setting:: ROOT_URLCONF
- ROOT_URLCONF
- ------------
- Default: Not defined
- A string representing the full Python import path to your root URLconf. For example:
- ``"mydjangoapps.urls"``. Can be overridden on a per-request basis by
- setting the attribute ``urlconf`` on the incoming ``HttpRequest``
- object. See :ref:`how-django-processes-a-request` for details.
- .. setting:: SECRET_KEY
- SECRET_KEY
- ----------
- Default: ``''`` (Empty string)
- A secret key for a particular Django installation. This is used to provide
- :doc:`cryptographic signing </topics/signing>`, and should be set to a unique,
- unpredictable value.
- :djadmin:`django-admin.py startproject <startproject>` automatically adds a
- randomly-generated ``SECRET_KEY`` to each new project.
- .. warning::
- **Keep this value secret.**
- Running Django with a known :setting:`SECRET_KEY` defeats many of Django's
- security protections, and can lead to privilege escalation and remote code
- execution vulnerabilities.
- .. versionchanged:: 1.5
- Django will now refuse to start if :setting:`SECRET_KEY` is not set.
- .. setting:: SECURE_PROXY_SSL_HEADER
- SECURE_PROXY_SSL_HEADER
- -----------------------
- Default: ``None``
- A tuple representing a HTTP header/value combination that signifies a request
- is secure. This controls the behavior of the request object's ``is_secure()``
- method.
- This takes some explanation. By default, ``is_secure()`` is able to determine
- whether a request is secure by looking at whether the requested URL uses
- "https://". This is important for Django's CSRF protection, and may be used
- by your own code or third-party apps.
- If your Django app is behind a proxy, though, the proxy may be "swallowing" the
- fact that a request is HTTPS, using a non-HTTPS connection between the proxy
- and Django. In this case, ``is_secure()`` would always return ``False`` -- even
- for requests that were made via HTTPS by the end user.
- In this situation, you'll want to configure your proxy to set a custom HTTP
- header that tells Django whether the request came in via HTTPS, and you'll want
- to set ``SECURE_PROXY_SSL_HEADER`` so that Django knows what header to look
- for.
- You'll need to set a tuple with two elements -- the name of the header to look
- for and the required value. For example::
- SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
- Here, we're telling Django that we trust the ``X-Forwarded-Proto`` header
- that comes from our proxy, and any time its value is ``'https'``, then the
- request is guaranteed to be secure (i.e., it originally came in via HTTPS).
- Obviously, you should *only* set this setting if you control your proxy or
- have some other guarantee that it sets/strips this header appropriately.
- Note that the header needs to be in the format as used by ``request.META`` --
- all caps and likely starting with ``HTTP_``. (Remember, Django automatically
- adds ``'HTTP_'`` to the start of x-header names before making the header
- available in ``request.META``.)
- .. warning::
- **You will probably open security holes in your site if you set this
- without knowing what you're doing. And if you fail to set it when you
- should. Seriously.**
- Make sure ALL of the following are true before setting this (assuming the
- values from the example above):
- * Your Django app is behind a proxy.
- * Your proxy strips the ``X-Forwarded-Proto`` header from all incoming
- requests. In other words, if end users include that header in their
- requests, the proxy will discard it.
- * Your proxy sets the ``X-Forwarded-Proto`` header and sends it to Django,
- but only for requests that originally come in via HTTPS.
- If any of those are not true, you should keep this setting set to ``None``
- and find another way of determining HTTPS, perhaps via custom middleware.
- .. setting:: SEND_BROKEN_LINK_EMAILS
- SEND_BROKEN_LINK_EMAILS
- -----------------------
- .. deprecated:: 1.6
- Since :class:`~django.middleware.common.BrokenLinkEmailsMiddleware`
- was split from :class:`~django.middleware.common.CommonMiddleware`,
- this setting no longer serves a purpose.
- Default: ``False``
- Whether to send an email to the :setting:`MANAGERS` each time somebody visits
- a Django-powered page that is 404ed with a non-empty referer (i.e., a broken
- link). This is only used if ``CommonMiddleware`` is installed (see
- :doc:`/topics/http/middleware`). See also :setting:`IGNORABLE_404_URLS` and
- :doc:`/howto/error-reporting`.
- .. setting:: SERIALIZATION_MODULES
- SERIALIZATION_MODULES
- ---------------------
- Default: Not defined.
- A dictionary of modules containing serializer definitions (provided as
- strings), keyed by a string identifier for that serialization type. For
- example, to define a YAML serializer, use::
- SERIALIZATION_MODULES = { 'yaml' : 'path.to.yaml_serializer' }
- .. setting:: SERVER_EMAIL
- SERVER_EMAIL
- ------------
- Default: ``'root@localhost'``
- The email address that error messages come from, such as those sent to
- :setting:`ADMINS` and :setting:`MANAGERS`.
- .. setting:: SHORT_DATE_FORMAT
- SHORT_DATE_FORMAT
- -----------------
- Default: ``m/d/Y`` (e.g. ``12/31/2003``)
- An available formatting that can be used for displaying date fields on
- templates. Note that if :setting:`USE_L10N` is set to ``True``, then the
- corresponding locale-dictated format has higher precedence and will be applied.
- See :tfilter:`allowed date format strings <date>`.
- See also :setting:`DATE_FORMAT` and :setting:`SHORT_DATETIME_FORMAT`.
- .. setting:: SHORT_DATETIME_FORMAT
- SHORT_DATETIME_FORMAT
- ---------------------
- Default: ``m/d/Y P`` (e.g. ``12/31/2003 4 p.m.``)
- An available formatting that can be used for displaying datetime fields on
- templates. Note that if :setting:`USE_L10N` is set to ``True``, then the
- corresponding locale-dictated format has higher precedence and will be applied.
- See :tfilter:`allowed date format strings <date>`.
- See also :setting:`DATE_FORMAT` and :setting:`SHORT_DATE_FORMAT`.
- .. setting:: SIGNING_BACKEND
- SIGNING_BACKEND
- ---------------
- Default: 'django.core.signing.TimestampSigner'
- The backend used for signing cookies and other data.
- See also the :doc:`/topics/signing` documentation.
- .. setting:: TEMPLATE_CONTEXT_PROCESSORS
- TEMPLATE_CONTEXT_PROCESSORS
- ---------------------------
- Default::
- ("django.contrib.auth.context_processors.auth",
- "django.core.context_processors.debug",
- "django.core.context_processors.i18n",
- "django.core.context_processors.media",
- "django.core.context_processors.static",
- "django.core.context_processors.tz",
- "django.contrib.messages.context_processors.messages")
- A tuple of callables that are used to populate the context in ``RequestContext``.
- These callables take a request object as their argument and return a dictionary
- of items to be merged into the context.
- .. setting:: TEMPLATE_DEBUG
- TEMPLATE_DEBUG
- --------------
- Default: ``False``
- A boolean that turns on/off template debug mode. If this is ``True``, the fancy
- error page will display a detailed report for any exception raised during
- template rendering. This report contains the relevant snippet of the template,
- with the appropriate line highlighted.
- Note that Django only displays fancy error pages if :setting:`DEBUG` is ``True``, so
- you'll want to set that to take advantage of this setting.
- See also :setting:`DEBUG`.
- .. setting:: TEMPLATE_DIRS
- TEMPLATE_DIRS
- -------------
- Default: ``()`` (Empty tuple)
- List of locations of the template source files searched by
- :class:`django.template.loaders.filesystem.Loader`, in search order.
- Note that these paths should use Unix-style forward slashes, even on Windows.
- See :doc:`/topics/templates`.
- .. setting:: TEMPLATE_LOADERS
- TEMPLATE_LOADERS
- ----------------
- Default::
- ('django.template.loaders.filesystem.Loader',
- 'django.template.loaders.app_directories.Loader')
- A tuple of template loader classes, specified as strings. Each ``Loader`` class
- knows how to import templates from a particular source. Optionally, a tuple can be
- used instead of a string. The first item in the tuple should be the ``Loader``'s
- module, subsequent items are passed to the ``Loader`` during initialization. See
- :doc:`/ref/templates/api`.
- .. setting:: TEMPLATE_STRING_IF_INVALID
- TEMPLATE_STRING_IF_INVALID
- --------------------------
- Default: ``''`` (Empty string)
- Output, as a string, that the template system should use for invalid (e.g.
- misspelled) variables. See :ref:`invalid-template-variables`..
- .. setting:: TEST_RUNNER
- TEST_RUNNER
- -----------
- Default: ``'django.test.runner.DiscoverRunner'``
- The name of the class to use for starting the test suite. See
- :ref:`other-testing-frameworks`.
- .. versionchanged:: 1.6
- Previously the default ``TEST_RUNNER`` was
- ``django.test.simple.DjangoTestSuiteRunner``.
- .. setting:: THOUSAND_SEPARATOR
- THOUSAND_SEPARATOR
- ------------------
- Default: ``,`` (Comma)
- Default thousand separator used when formatting numbers. This setting is
- used only when :setting:`USE_THOUSAND_SEPARATOR` is ``True`` and
- :setting:`NUMBER_GROUPING` is greater than ``0``.
- Note that if :setting:`USE_L10N` is set to ``True``, then the locale-dictated
- format has higher precedence and will be applied instead.
- See also :setting:`NUMBER_GROUPING`, :setting:`DECIMAL_SEPARATOR` and
- :setting:`USE_THOUSAND_SEPARATOR`.
- .. setting:: TIME_FORMAT
- TIME_FORMAT
- -----------
- Default: ``'P'`` (e.g. ``4 p.m.``)
- The default formatting to use for displaying time fields in any part of the
- system. Note that if :setting:`USE_L10N` is set to ``True``, then the
- locale-dictated format has higher precedence and will be applied instead. See
- :tfilter:`allowed date format strings <date>`.
- See also :setting:`DATE_FORMAT` and :setting:`DATETIME_FORMAT`.
- .. setting:: TIME_INPUT_FORMATS
- TIME_INPUT_FORMATS
- ------------------
- Default::
- (
- '%H:%M:%S', # '14:30:59'
- '%H:%M:%S.%f', # '14:30:59.000200'
- '%H:%M', # '14:30'
- )
- A tuple of formats that will be accepted when inputting data on a time field.
- Formats will be tried in order, using the first valid one. Note that these
- format strings use Python's datetime_ module syntax, not the format strings
- from the ``date`` Django template tag.
- When :setting:`USE_L10N` is ``True``, the locale-dictated format has higher
- precedence and will be applied instead.
- See also :setting:`DATE_INPUT_FORMATS` and :setting:`DATETIME_INPUT_FORMATS`.
- .. versionchanged:: 1.6
- Input format with microseconds has been added.
- .. _datetime: http://docs.python.org/library/datetime.html#strftime-strptime-behavior
- .. setting:: TIME_ZONE
- TIME_ZONE
- ---------
- Default: ``'America/Chicago'``
- A string representing the time zone for this installation, or ``None``. See
- the `list of time zones`_.
- .. note::
- Since Django was first released with the :setting:`TIME_ZONE` set to
- ``'America/Chicago'``, the global setting (used if nothing is defined in
- your project's ``settings.py``) remains ``'America/Chicago'`` for backwards
- compatibility. New project templates default to ``'UTC'``.
- Note that this isn't necessarily the time zone of the server. For example, one
- server may serve multiple Django-powered sites, each with a separate time zone
- setting.
- When :setting:`USE_TZ` is ``False``, this is the time zone in which Django
- will store all datetimes. When :setting:`USE_TZ` is ``True``, this is the
- default time zone that Django will use to display datetimes in templates and
- to interpret datetimes entered in forms.
- Django sets the ``os.environ['TZ']`` variable to the time zone you specify in
- the :setting:`TIME_ZONE` setting. Thus, all your views and models will
- automatically operate in this time zone. However, Django won't set the ``TZ``
- environment variable under the following conditions:
- * If you're using the manual configuration option as described in
- :ref:`manually configuring settings
- <settings-without-django-settings-module>`, or
- * If you specify ``TIME_ZONE = None``. This will cause Django to fall back to
- using the system timezone. However, this is discouraged when :setting:`USE_TZ
- = True <USE_TZ>`, because it makes conversions between local time and UTC
- less reliable.
- If Django doesn't set the ``TZ`` environment variable, it's up to you
- to ensure your processes are running in the correct environment.
- .. note::
- Django cannot reliably use alternate time zones in a Windows environment.
- If you're running Django on Windows, :setting:`TIME_ZONE` must be set to
- match the system time zone.
- .. _list of time zones: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
- .. _pytz: http://pytz.sourceforge.net/
- .. setting:: TRANSACTIONS_MANAGED
- TRANSACTIONS_MANAGED
- --------------------
- .. deprecated:: 1.6
- This setting was deprecated because its name is very misleading. Use the
- :setting:`AUTOCOMMIT <DATABASE-AUTOCOMMIT>` key in :setting:`DATABASES`
- entries instead.
- Default: ``False``
- Set this to ``True`` if you want to :ref:`disable Django's transaction
- management <deactivate-transaction-management>` and implement your own.
- .. setting:: USE_ETAGS
- USE_ETAGS
- ---------
- Default: ``False``
- A boolean that specifies whether to output the "Etag" header. This saves
- bandwidth but slows down performance. This is used by the ``CommonMiddleware``
- (see :doc:`/topics/http/middleware`) and in the``Cache Framework``
- (see :doc:`/topics/cache`).
- .. setting:: USE_I18N
- USE_I18N
- --------
- Default: ``True``
- A boolean that specifies whether Django's translation system should be enabled.
- This provides an easy way to turn it off, for performance. If this is set to
- ``False``, Django will make some optimizations so as not to load the
- translation machinery.
- See also :setting:`LANGUAGE_CODE`, :setting:`USE_L10N` and :setting:`USE_TZ`.
- .. setting:: USE_L10N
- USE_L10N
- --------
- Default: ``False``
- A boolean that specifies if localized formatting of data will be enabled by
- default or not. If this is set to ``True``, e.g. Django will display numbers and
- dates using the format of the current locale.
- See also :setting:`LANGUAGE_CODE`, :setting:`USE_I18N` and :setting:`USE_TZ`.
- .. note::
- The default :file:`settings.py` file created by :djadmin:`django-admin.py
- startproject <startproject>` includes ``USE_L10N = True`` for convenience.
- .. setting:: USE_THOUSAND_SEPARATOR
- USE_THOUSAND_SEPARATOR
- ----------------------
- Default: ``False``
- A boolean that specifies whether to display numbers using a thousand separator.
- When :setting:`USE_L10N` is set to ``True`` and if this is also set to
- ``True``, Django will use the values of :setting:`THOUSAND_SEPARATOR` and
- :setting:`NUMBER_GROUPING` to format numbers.
- See also :setting:`DECIMAL_SEPARATOR`, :setting:`NUMBER_GROUPING` and
- :setting:`THOUSAND_SEPARATOR`.
- .. setting:: USE_TZ
- USE_TZ
- ------
- Default: ``False``
- A boolean that specifies if datetimes will be timezone-aware by default or not.
- If this is set to ``True``, Django will use timezone-aware datetimes internally.
- Otherwise, Django will use naive datetimes in local time.
- See also :setting:`TIME_ZONE`, :setting:`USE_I18N` and :setting:`USE_L10N`.
- .. note::
- The default :file:`settings.py` file created by
- :djadmin:`django-admin.py startproject <startproject>` includes
- ``USE_TZ = True`` for convenience.
- .. setting:: USE_X_FORWARDED_HOST
- USE_X_FORWARDED_HOST
- --------------------
- Default: ``False``
- A boolean that specifies whether to use the X-Forwarded-Host header in
- preference to the Host header. This should only be enabled if a proxy
- which sets this header is in use.
- .. setting:: WSGI_APPLICATION
- WSGI_APPLICATION
- ----------------
- Default: ``None``
- The full Python path of the WSGI application object that Django's built-in
- servers (e.g. :djadmin:`runserver`) will use. The :djadmin:`django-admin.py
- startproject <startproject>` management command will create a simple
- ``wsgi.py`` file with an ``application`` callable in it, and point this setting
- to that ``application``.
- If not set, the return value of ``django.core.wsgi.get_wsgi_application()``
- will be used. In this case, the behavior of :djadmin:`runserver` will be
- identical to previous Django versions.
- .. setting:: YEAR_MONTH_FORMAT
- YEAR_MONTH_FORMAT
- -----------------
- Default: ``'F Y'``
- The default formatting to use for date fields on Django admin change-list
- pages -- and, possibly, by other parts of the system -- in cases when only the
- year and month are displayed.
- For example, when a Django admin change-list page is being filtered by a date
- drilldown, the header for a given month displays the month and the year.
- Different locales have different formats. For example, U.S. English would say
- "January 2006," whereas another locale might say "2006/January."
- See :tfilter:`allowed date format strings <date>`. See also
- :setting:`DATE_FORMAT`, :setting:`DATETIME_FORMAT`, :setting:`TIME_FORMAT`
- and :setting:`MONTH_DAY_FORMAT`.
- .. setting:: X_FRAME_OPTIONS
- X_FRAME_OPTIONS
- ---------------
- Default: ``'SAMEORIGIN'``
- The default value for the X-Frame-Options header used by
- :class:`~django.middleware.clickjacking.XFrameOptionsMiddleware`. See the
- :doc:`clickjacking protection </ref/clickjacking/>` documentation.
- Admindocs
- =========
- Settings for :mod:`django.contrib.admindocs`.
- .. setting:: ADMIN_FOR
- ADMIN_FOR
- ---------
- Default: ``()`` (Empty tuple)
- Used for admin-site settings modules, this should be a tuple of settings
- modules (in the format ``'foo.bar.baz'``) for which this site is an admin.
- The admin site uses this in its automatically-introspected documentation of
- models, views and template tags.
- Auth
- ====
- Settings for :mod:`django.contrib.auth`.
- .. setting:: AUTHENTICATION_BACKENDS
- AUTHENTICATION_BACKENDS
- -----------------------
- Default: ``('django.contrib.auth.backends.ModelBackend',)``
- A tuple of authentication backend classes (as strings) to use when attempting to
- authenticate a user. See the :ref:`authentication backends documentation
- <authentication-backends>` for details.
- .. setting:: AUTH_USER_MODEL
- AUTH_USER_MODEL
- ---------------
- Default: 'auth.User'
- The model to use to represent a User. See :ref:`auth-custom-user`.
- .. setting:: LOGIN_REDIRECT_URL
- LOGIN_REDIRECT_URL
- ------------------
- Default: ``'/accounts/profile/'``
- The URL where requests are redirected after login when the
- ``contrib.auth.login`` view gets no ``next`` parameter.
- This is used by the :func:`~django.contrib.auth.decorators.login_required`
- decorator, for example.
- .. versionchanged:: 1.5
- This setting now also accepts view function names and
- :ref:`named URL patterns <naming-url-patterns>` which can be used to reduce
- configuration duplication since you no longer have to define the URL in two
- places (``settings`` and URLconf).
- For backward compatibility reasons the default remains unchanged.
- .. setting:: LOGIN_URL
- LOGIN_URL
- ---------
- Default: ``'/accounts/login/'``
- The URL where requests are redirected for login, especially when using the
- :func:`~django.contrib.auth.decorators.login_required` decorator.
- .. versionchanged:: 1.5
- This setting now also accepts view function names and
- :ref:`named URL patterns <naming-url-patterns>` which can be used to reduce
- configuration duplication since you no longer have to define the URL in two
- places (``settings`` and URLconf).
- For backward compatibility reasons the default remains unchanged.
- .. setting:: LOGOUT_URL
- LOGOUT_URL
- ----------
- Default: ``'/accounts/logout/'``
- LOGIN_URL counterpart.
- .. setting:: PASSWORD_RESET_TIMEOUT_DAYS
- PASSWORD_RESET_TIMEOUT_DAYS
- ---------------------------
- Default: ``3``
- The number of days a password reset link is valid for. Used by the
- :mod:`django.contrib.auth` password reset mechanism.
- .. setting:: PASSWORD_HASHERS
- PASSWORD_HASHERS
- ----------------
- See :ref:`auth_password_storage`.
- Default::
- ('django.contrib.auth.hashers.PBKDF2PasswordHasher',
- 'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
- 'django.contrib.auth.hashers.BCryptPasswordHasher',
- 'django.contrib.auth.hashers.SHA1PasswordHasher',
- 'django.contrib.auth.hashers.MD5PasswordHasher',
- 'django.contrib.auth.hashers.UnsaltedMD5PasswordHasher',
- 'django.contrib.auth.hashers.CryptPasswordHasher',)
- .. _settings-comments:
- Comments
- ========
- Settings for :mod:`django.contrib.comments`.
- .. setting:: COMMENTS_HIDE_REMOVED
- COMMENTS_HIDE_REMOVED
- ---------------------
- If ``True`` (default), removed comments will be excluded from comment
- lists/counts (as taken from template tags). Otherwise, the template author is
- responsible for some sort of a "this comment has been removed by the site staff"
- message.
- .. setting:: COMMENT_MAX_LENGTH
- COMMENT_MAX_LENGTH
- ------------------
- The maximum length of the comment field, in characters. Comments longer than
- this will be rejected. Defaults to 3000.
- .. setting:: COMMENTS_APP
- COMMENTS_APP
- ------------
- An app which provides :doc:`customization of the comments framework
- </ref/contrib/comments/custom>`. Use the same dotted-string notation
- as in :setting:`INSTALLED_APPS`. Your custom :setting:`COMMENTS_APP`
- must also be listed in :setting:`INSTALLED_APPS`.
- .. setting:: PROFANITIES_LIST
- PROFANITIES_LIST
- ----------------
- Default: ``()`` (Empty tuple)
- A tuple of profanities, as strings, that will be forbidden in comments when
- ``COMMENTS_ALLOW_PROFANITIES`` is ``False``.
- .. _settings-messages:
- Messages
- ========
- Settings for :mod:`django.contrib.messages`.
- .. setting:: MESSAGE_LEVEL
- MESSAGE_LEVEL
- -------------
- Default: ``messages.INFO``
- Sets the minimum message level that will be recorded by the messages
- framework. See :ref:`message levels <message-level>` for more details.
- .. admonition:: Important
- If you override ``MESSAGE_LEVEL`` in your settings file and rely on any of
- the built-in constants, you must import the constants module directly to
- avoid the potential for circular imports, e.g.::
- from django.contrib.messages import constants as message_constants
- MESSAGE_LEVEL = message_constants.DEBUG
- If desired, you may specify the numeric values for the constants directly
- according to the values in the above :ref:`constants table
- <message-level-constants>`.
- .. setting:: MESSAGE_STORAGE
- MESSAGE_STORAGE
- ---------------
- Default: ``'django.contrib.messages.storage.fallback.FallbackStorage'``
- Controls where Django stores message data. Valid values are:
- * ``'django.contrib.messages.storage.fallback.FallbackStorage'``
- * ``'django.contrib.messages.storage.session.SessionStorage'``
- * ``'django.contrib.messages.storage.cookie.CookieStorage'``
- See :ref:`message storage backends <message-storage-backends>` for more details.
- The backends that use cookies -- ``CookieStorage`` and ``FallbackStorage`` --
- use the value of :setting:`SESSION_COOKIE_DOMAIN` when setting their cookies.
- .. setting:: MESSAGE_TAGS
- MESSAGE_TAGS
- ------------
- Default::
- {messages.DEBUG: 'debug',
- messages.INFO: 'info',
- messages.SUCCESS: 'success',
- messages.WARNING: 'warning',
- messages.ERROR: 'error',}
- This sets the mapping of message level to message tag, which is typically
- rendered as a CSS class in HTML. If you specify a value, it will extend
- the default. This means you only have to specify those values which you need
- to override. See :ref:`message-displaying` above for more details.
- .. admonition:: Important
- If you override ``MESSAGE_TAGS`` in your settings file and rely on any of
- the built-in constants, you must import the ``constants`` module directly to
- avoid the potential for circular imports, e.g.::
- from django.contrib.messages import constants as message_constants
- MESSAGE_TAGS = {message_constants.INFO: ''}
- If desired, you may specify the numeric values for the constants directly
- according to the values in the above :ref:`constants table
- <message-level-constants>`.
- .. _settings-sessions:
- Sessions
- ========
- Settings for :mod:`django.contrib.sessions`.
- .. setting:: SESSION_CACHE_ALIAS
- SESSION_CACHE_ALIAS
- -------------------
- Default: ``default``
- If you're using :ref:`cache-based session storage <cached-sessions-backend>`,
- this selects the cache to use.
- .. setting:: SESSION_COOKIE_AGE
- SESSION_COOKIE_AGE
- ------------------
- Default: ``1209600`` (2 weeks, in seconds)
- The age of session cookies, in seconds.
- .. setting:: SESSION_COOKIE_DOMAIN
- SESSION_COOKIE_DOMAIN
- ---------------------
- Default: ``None``
- The domain to use for session cookies. Set this to a string such as
- ``".example.com"`` (note the leading dot!) for cross-domain cookies, or use
- ``None`` for a standard domain cookie.
- Be cautious when updating this setting on a production site. If you update
- this setting to enable cross-domain cookies on a site that previously used
- standard domain cookies, existing user cookies will be set to the old
- domain. This may result in them being unable to log in as long as these cookies
- persist.
- .. setting:: SESSION_COOKIE_HTTPONLY
- SESSION_COOKIE_HTTPONLY
- -----------------------
- Default: ``True``
- Whether to use ``HTTPOnly`` flag on the session cookie. If this is set to
- ``True``, client-side JavaScript will not to be able to access the
- session cookie.
- HTTPOnly_ is a flag included in a Set-Cookie HTTP response header. It
- is not part of the :rfc:`2109` standard for cookies, and it isn't honored
- consistently by all browsers. However, when it is honored, it can be a
- useful way to mitigate the risk of client side script accessing the
- protected cookie data.
- .. _HTTPOnly: https://www.owasp.org/index.php/HTTPOnly
- .. setting:: SESSION_COOKIE_NAME
- SESSION_COOKIE_NAME
- -------------------
- Default: ``'sessionid'``
- The name of the cookie to use for sessions. This can be whatever you want (but
- should be different from :setting:`LANGUAGE_COOKIE_NAME`).
- .. setting:: SESSION_COOKIE_PATH
- SESSION_COOKIE_PATH
- -------------------
- Default: ``'/'``
- The path set on the session cookie. This should either match the URL path of your
- Django installation or be parent of that path.
- This is useful if you have multiple Django instances running under the same
- hostname. They can use different cookie paths, and each instance will only see
- its own session cookie.
- .. setting:: SESSION_COOKIE_SECURE
- SESSION_COOKIE_SECURE
- ---------------------
- Default: ``False``
- Whether to use a secure cookie for the session cookie. If this is set to
- ``True``, the cookie will be marked as "secure," which means browsers may
- ensure that the cookie is only sent under an HTTPS connection.
- .. setting:: SESSION_ENGINE
- SESSION_ENGINE
- --------------
- Default: ``django.contrib.sessions.backends.db``
- Controls where Django stores session data. Valid values are:
- * ``'django.contrib.sessions.backends.db'``
- * ``'django.contrib.sessions.backends.file'``
- * ``'django.contrib.sessions.backends.cache'``
- * ``'django.contrib.sessions.backends.cached_db'``
- * ``'django.contrib.sessions.backends.signed_cookies'``
- See :ref:`configuring-sessions` for more details.
- .. setting:: SESSION_EXPIRE_AT_BROWSER_CLOSE
- SESSION_EXPIRE_AT_BROWSER_CLOSE
- -------------------------------
- Default: ``False``
- Whether to expire the session when the user closes his or her browser. See
- :ref:`browser-length-vs-persistent-sessions`.
- .. setting:: SESSION_FILE_PATH
- SESSION_FILE_PATH
- -----------------
- Default: ``None``
- If you're using file-based session storage, this sets the directory in
- which Django will store session data. When the default value (``None``) is
- used, Django will use the standard temporary directory for the system.
- .. setting:: SESSION_SAVE_EVERY_REQUEST
- SESSION_SAVE_EVERY_REQUEST
- --------------------------
- Default: ``False``
- Whether to save the session data on every request. If this is ``False``
- (default), then the session data will only be saved if it has been modified --
- that is, if any of its dictionary values have been assigned or deleted.
- Sites
- =====
- Settings for :mod:`django.contrib.sites`.
- .. setting:: SITE_ID
- SITE_ID
- -------
- Default: Not defined
- The ID, as an integer, of the current site in the ``django_site`` database
- table. This is used so that application data can hook into specific sites
- and a single database can manage content for multiple sites.
- .. _settings-staticfiles:
- Static files
- ============
- Settings for :mod:`django.contrib.staticfiles`.
- .. setting:: STATIC_ROOT
- STATIC_ROOT
- -----------
- Default: ``''`` (Empty string)
- The absolute path to the directory where :djadmin:`collectstatic` will collect
- static files for deployment.
- Example: ``"/var/www/example.com/static/"``
- If the :doc:`staticfiles</ref/contrib/staticfiles>` contrib app is enabled
- (default) the :djadmin:`collectstatic` management command will collect static
- files into this directory. See the howto on :doc:`managing static
- files</howto/static-files/index>` for more details about usage.
- .. warning::
- This should be an (initially empty) destination directory for collecting
- your static files from their permanent locations into one directory for
- ease of deployment; it is **not** a place to store your static files
- permanently. You should do that in directories that will be found by
- :doc:`staticfiles</ref/contrib/staticfiles>`'s
- :setting:`finders<STATICFILES_FINDERS>`, which by default, are
- ``'static/'`` app sub-directories and any directories you include in
- :setting:`STATICFILES_DIRS`).
- .. setting:: STATIC_URL
- STATIC_URL
- ----------
- Default: ``None``
- URL to use when referring to static files located in :setting:`STATIC_ROOT`.
- Example: ``"/static/"`` or ``"http://static.example.com/"``
- If not ``None``, this will be used as the base path for
- :ref:`asset definitions<form-asset-paths>` (the ``Media`` class) and the
- :doc:`staticfiles app</ref/contrib/staticfiles>`.
- It must end in a slash if set to a non-empty value.
- .. setting:: STATICFILES_DIRS
- STATICFILES_DIRS
- ----------------
- Default: ``[]``
- This setting defines the additional locations the staticfiles app will traverse
- if the ``FileSystemFinder`` finder is enabled, e.g. if you use the
- :djadmin:`collectstatic` or :djadmin:`findstatic` management command or use the
- static file serving view.
- This should be set to a list or tuple of strings that contain full paths to
- your additional files directory(ies) e.g.::
- STATICFILES_DIRS = (
- "/home/special.polls.com/polls/static",
- "/home/polls.com/polls/static",
- "/opt/webfiles/common",
- )
- Prefixes (optional)
- ~~~~~~~~~~~~~~~~~~~
- In case you want to refer to files in one of the locations with an additional
- namespace, you can **optionally** provide a prefix as ``(prefix, path)``
- tuples, e.g.::
- STATICFILES_DIRS = (
- # ...
- ("downloads", "/opt/webfiles/stats"),
- )
- Example:
- Assuming you have :setting:`STATIC_URL` set ``'/static/'``, the
- :djadmin:`collectstatic` management command would collect the "stats" files
- in a ``'downloads'`` subdirectory of :setting:`STATIC_ROOT`.
- This would allow you to refer to the local file
- ``'/opt/webfiles/stats/polls_20101022.tar.gz'`` with
- ``'/static/downloads/polls_20101022.tar.gz'`` in your templates, e.g.:
- .. code-block:: html+django
- <a href="{{ STATIC_URL }}downloads/polls_20101022.tar.gz">
- .. setting:: STATICFILES_STORAGE
- STATICFILES_STORAGE
- -------------------
- Default: ``'django.contrib.staticfiles.storage.StaticFilesStorage'``
- The file storage engine to use when collecting static files with the
- :djadmin:`collectstatic` management command.
- A ready-to-use instance of the storage backend defined in this setting
- can be found at ``django.contrib.staticfiles.storage.staticfiles_storage``.
- For an example, see :ref:`staticfiles-from-cdn`.
- .. setting:: STATICFILES_FINDERS
- STATICFILES_FINDERS
- -------------------
- Default::
- ("django.contrib.staticfiles.finders.FileSystemFinder",
- "django.contrib.staticfiles.finders.AppDirectoriesFinder")
- The list of finder backends that know how to find static files in
- various locations.
- The default will find files stored in the :setting:`STATICFILES_DIRS` setting
- (using ``django.contrib.staticfiles.finders.FileSystemFinder``) and in a
- ``static`` subdirectory of each app (using
- ``django.contrib.staticfiles.finders.AppDirectoriesFinder``). If multiple
- files with the same name are present, the first file that is found will be
- used.
- One finder is disabled by default:
- ``django.contrib.staticfiles.finders.DefaultStorageFinder``. If added to
- your :setting:`STATICFILES_FINDERS` setting, it will look for static files in
- the default file storage as defined by the :setting:`DEFAULT_FILE_STORAGE`
- setting.
- .. note::
- When using the ``AppDirectoriesFinder`` finder, make sure your apps
- can be found by staticfiles. Simply add the app to the
- :setting:`INSTALLED_APPS` setting of your site.
- Static file finders are currently considered a private interface, and this
- interface is thus undocumented.
- Core Settings Topical Index
- ===========================
- Cache
- -----
- * :setting:`CACHES`
- * :setting:`CACHE_MIDDLEWARE_ALIAS`
- * :setting:`CACHE_MIDDLEWARE_ANONYMOUS_ONLY`
- * :setting:`CACHE_MIDDLEWARE_KEY_PREFIX`
- * :setting:`CACHE_MIDDLEWARE_SECONDS`
- Database
- --------
- * :setting:`DATABASES`
- * :setting:`DATABASE_ROUTERS`
- * :setting:`DEFAULT_INDEX_TABLESPACE`
- * :setting:`DEFAULT_TABLESPACE`
- * :setting:`TRANSACTIONS_MANAGED`
- Debugging
- ---------
- * :setting:`DEBUG`
- * :setting:`DEBUG_PROPAGATE_EXCEPTIONS`
- Email
- -----
- * :setting:`ADMINS`
- * :setting:`DEFAULT_CHARSET`
- * :setting:`DEFAULT_FROM_EMAIL`
- * :setting:`EMAIL_BACKEND`
- * :setting:`EMAIL_FILE_PATH`
- * :setting:`EMAIL_HOST`
- * :setting:`EMAIL_HOST_PASSWORD`
- * :setting:`EMAIL_HOST_USER`
- * :setting:`EMAIL_PORT`
- * :setting:`EMAIL_SUBJECT_PREFIX`
- * :setting:`EMAIL_USE_TLS`
- * :setting:`MANAGERS`
- * :setting:`SEND_BROKEN_LINK_EMAILS`
- * :setting:`SERVER_EMAIL`
- Error reporting
- ---------------
- * :setting:`DEFAULT_EXCEPTION_REPORTER_FILTER`
- * :setting:`IGNORABLE_404_URLS`
- * :setting:`MANAGERS`
- * :setting:`SEND_BROKEN_LINK_EMAILS`
- File uploads
- ------------
- * :setting:`DEFAULT_FILE_STORAGE`
- * :setting:`FILE_CHARSET`
- * :setting:`FILE_UPLOAD_HANDLERS`
- * :setting:`FILE_UPLOAD_MAX_MEMORY_SIZE`
- * :setting:`FILE_UPLOAD_PERMISSIONS`
- * :setting:`FILE_UPLOAD_TEMP_DIR`
- * :setting:`MEDIA_ROOT`
- * :setting:`MEDIA_URL`
- Globalization (i18n/l10n)
- -------------------------
- * :setting:`DATE_FORMAT`
- * :setting:`DATE_INPUT_FORMATS`
- * :setting:`DATETIME_FORMAT`
- * :setting:`DATETIME_INPUT_FORMATS`
- * :setting:`DECIMAL_SEPARATOR`
- * :setting:`FIRST_DAY_OF_WEEK`
- * :setting:`FORMAT_MODULE_PATH`
- * :setting:`LANGUAGE_CODE`
- * :setting:`LANGUAGE_COOKIE_NAME`
- * :setting:`LANGUAGES`
- * :setting:`LOCALE_PATHS`
- * :setting:`MONTH_DAY_FORMAT`
- * :setting:`NUMBER_GROUPING`
- * :setting:`SHORT_DATE_FORMAT`
- * :setting:`SHORT_DATETIME_FORMAT`
- * :setting:`THOUSAND_SEPARATOR`
- * :setting:`TIME_FORMAT`
- * :setting:`TIME_INPUT_FORMATS`
- * :setting:`TIME_ZONE`
- * :setting:`USE_I18N`
- * :setting:`USE_L10N`
- * :setting:`USE_THOUSAND_SEPARATOR`
- * :setting:`USE_TZ`
- * :setting:`YEAR_MONTH_FORMAT`
- HTTP
- ----
- * :setting:`DEFAULT_CHARSET`
- * :setting:`DEFAULT_CONTENT_TYPE`
- * :setting:`DISALLOWED_USER_AGENTS`
- * :setting:`FORCE_SCRIPT_NAME`
- * :setting:`INTERNAL_IPS`
- * :setting:`MIDDLEWARE_CLASSES`
- * :setting:`SECURE_PROXY_SSL_HEADER`
- * :setting:`SIGNING_BACKEND`
- * :setting:`USE_ETAGS`
- * :setting:`USE_X_FORWARDED_HOST`
- * :setting:`WSGI_APPLICATION`
- Logging
- -------
- * :setting:`LOGGING`
- * :setting:`LOGGING_CONFIG`
- Models
- ------
- * :setting:`ABSOLUTE_URL_OVERRIDES`
- * :setting:`FIXTURE_DIRS`
- * :setting:`INSTALLED_APPS`
- Security
- --------
- * Cross Site Request Forgery protection
- * :setting:`CSRF_COOKIE_DOMAIN`
- * :setting:`CSRF_COOKIE_NAME`
- * :setting:`CSRF_COOKIE_PATH`
- * :setting:`CSRF_COOKIE_SECURE`
- * :setting:`CSRF_FAILURE_VIEW`
- * :setting:`SECRET_KEY`
- * :setting:`X_FRAME_OPTIONS`
- Serialization
- -------------
- * :setting:`DEFAULT_CHARSET`
- * :setting:`SERIALIZATION_MODULES`
- Templates
- ---------
- * :setting:`ALLOWED_INCLUDE_ROOTS`
- * :setting:`TEMPLATE_CONTEXT_PROCESSORS`
- * :setting:`TEMPLATE_DEBUG`
- * :setting:`TEMPLATE_DIRS`
- * :setting:`TEMPLATE_LOADERS`
- * :setting:`TEMPLATE_STRING_IF_INVALID`
- Testing
- -------
- * Database
- * :setting:`TEST_CHARSET`
- * :setting:`TEST_COLLATION`
- * :setting:`TEST_DEPENDENCIES`
- * :setting:`TEST_MIRROR`
- * :setting:`TEST_NAME`
- * :setting:`TEST_CREATE`
- * :setting:`TEST_USER`
- * :setting:`TEST_USER_CREATE`
- * :setting:`TEST_PASSWD`
- * :setting:`TEST_TBLSPACE`
- * :setting:`TEST_TBLSPACE_TMP`
- * :setting:`TEST_RUNNER`
- URLs
- ----
- * :setting:`APPEND_SLASH`
- * :setting:`PREPEND_WWW`
- * :setting:`ROOT_URLCONF`
|