.. _ref-settings:

=================
Tastypie Settings
=================

This is a comprehensive list of the settings Tastypie recognizes.


``API_LIMIT_PER_PAGE``
======================

**Optional**

This setting controls the default number of records Tastypie will show
in a list view.

This is only used when a user does not specify a ``limit`` GET parameter and
the ``Resource`` subclass has not overridden the number to be shown.

An example::

    API_LIMIT_PER_PAGE = 50

If you don't want to limit the number of records by default, you can set this setting to 0::

    API_LIMIT_PER_PAGE = 0

Defaults to 20.


``TASTYPIE_FULL_DEBUG``
=======================

**Optional**

This setting controls what the behavior is when an unhandled exception occurs.

If set to ``True`` and ``settings.DEBUG = True``, the standard Django
technical 500 is displayed.

If not set or set to ``False``, Tastypie will return a serialized response.
If ``settings.DEBUG`` is ``True``, you'll get the actual exception message plus
a traceback. If ``settings.DEBUG`` is ``False``, Tastypie will call
``mail_admins()`` and provide a canned error message (which you can override
with ``TASTYPIE_CANNED_ERROR``) in the response.

An example::

    TASTYPIE_FULL_DEBUG = True

Defaults to ``False``.


``TASTYPIE_CANNED_ERROR``
=========================

**Optional**

This setting allows you to override the canned error response when an
unhandled exception is raised and ``settings.DEBUG`` is ``False``.

An example::

    TASTYPIE_CANNED_ERROR = "Oops, we broke it!"

Defaults to ``"Sorry, this request could not be processed. Please try again later."``.


``TASTYPIE_ALLOW_MISSING_SLASH``
================================

**Optional**

This setting allows your URLs to be missing the final slash. Useful for
integrating with other systems.

You must also have ``settings.APPEND_SLASH = False`` so that Django does not
emit HTTP 302 redirects.

An example::

    TASTYPIE_ALLOW_MISSING_SLASH = True

Defaults to ``False``.


``TASTYPIE_DATETIME_FORMATTING``
================================

**Optional**

This setting allows you to globally choose what format your datetime/date/time
data will be formatted in. Valid options are ``iso-8601``, ``iso-8601-strict`` & ``rfc-2822``.

An example::

    TASTYPIE_DATETIME_FORMATTING = 'rfc-2822'

Defaults to ``iso-8601``. ``iso-8601`` includes microseconds if available, use ``iso-8601-strict`` to strip them.

.. _settings.TASTYPIE_DEFAULT_FORMATS:

``TASTYPIE_DEFAULT_FORMATS``
================================

**Optional**

This setting allows you to globally configure the list of allowed serialization
formats for your entire site.

An example::

    TASTYPIE_DEFAULT_FORMATS = ['json', 'xml']

Defaults to ``['json', 'xml', 'yaml', 'plist']``.


``TASTYPIE_ABSTRACT_APIKEY``
============================

**Optional**

This setting makes the ``ApiKey`` model an `abstract base class`_. This may be
useful in multi-database setups where many databases each have their own table
for user data and ``ApiKeyAuthentication`` is not used. Without this setting,
the ``tastypie_apikey`` table would have to be created on each database
containing user account data (such as Django's built-in ``auth_user`` table
generated by ``django.contrib.auth.models.User``). Valid options are ``True`` &
``False``.

An example::

    TASTYPIE_ABSTRACT_APIKEY = True

Defaults to ``False``.

.. _`abstract base class`: https://docs.djangoproject.com/en/dev/topics/db/models/#abstract-base-classes
