aboutsummaryrefslogtreecommitdiffstats
path: root/djangorestframework/settings.py
blob: 1acaad0c3ac4ec1b7bd40db47bc385d57fd3acb7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
"""
Settings for REST framework are all namespaced in the API_SETTINGS setting.
For example your project's `settings.py` file might look like this:

API_SETTINGS = {
    'DEFAULT_RENDERERS': (
        'djangorestframework.renderers.JSONRenderer',
        'djangorestframework.renderers.YAMLRenderer',
    )
    'DEFAULT_PARSERS': (
        'djangorestframework.parsers.JSONParser',
        'djangorestframework.parsers.YAMLParser',
    )
}

"""
from django.conf import settings
from djangorestframework import renderers
from djangorestframework.compat import yaml


DEFAULTS = {
    'DEFAULT_RENDERERS': (
        renderers.JSONRenderer,
        renderers.JSONPRenderer,
        renderers.DocumentingHTMLRenderer,
        renderers.DocumentingXHTMLRenderer,
        renderers.DocumentingPlainTextRenderer,
        renderers.XMLRenderer
    )
}

if yaml:
    DEFAULTS['DEFAULT_RENDERERS'] += (renderers.YAMLRenderer, )


class APISettings(object):
    def __getattr__(self, attr):
        try:
            return settings.API_SETTINGS[attr]
        except (AttributeError, KeyError):
            # 'API_SETTINGS' does not exist,
            # or requested setting is not present in 'API_SETTINGS'.
            try:
                return DEFAULTS[attr]
            except KeyError:
                raise AttributeError("No such setting '%s'" % attr)

api_settings = APISettings()