Настройки

Настройки

Пространства имен - это отличная идея - давайте делать их больше!

Конфигурация для DRF находится в едином пространстве имен в настройках Django под названием REST_FRAMEWORK.

Например, файл settings.py вашего проекта может содержать что-то вроде этого:

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': [
        'rest_framework.renderers.JSONRenderer',
    ],
    'DEFAULT_PARSER_CLASSES': [
        'rest_framework.parsers.JSONParser',
    ]
}

Доступ к настройкам

Если вам необходимо получить доступ к значениям настроек API DRF в вашем проекте, вам следует использовать объект api_settings. Например.

from rest_framework.settings import api_settings

print(api_settings.DEFAULT_AUTHENTICATION_CLASSES)

Объект api_settings будет проверять наличие любых пользовательских настроек и в противном случае возвращаться к значениям по умолчанию. Любая настройка, использующая строковые пути импорта для ссылки на класс, будет автоматически импортировать и возвращать класс, на который ссылается, вместо строкового литерала.


API Reference

Настройки политики API

Следующие настройки управляют основными политиками API и применяются к каждому представлению APIView на основе класса или @api_view на основе функции.

DEFAULT_RENDERER_CLASSES

Список или кортеж классов рендереров, определяющий набор рендереров по умолчанию, которые могут быть использованы при возврате объекта Response.

По умолчанию:

[
    'rest_framework.renderers.JSONRenderer',
    'rest_framework.renderers.BrowsableAPIRenderer',
]

DEFAULT_PARSER_CLASSES

Список или кортеж классов парсеров, определяющий набор парсеров по умолчанию, используемых при обращении к свойству request.data.

По умолчанию:

[
    'rest_framework.parsers.JSONParser',
    'rest_framework.parsers.FormParser',
    'rest_framework.parsers.MultiPartParser'
]

DEFAULT_AUTHENTICATION_CLASSES

Список или кортеж классов аутентификации, определяющий набор аутентификаторов по умолчанию, используемых при обращении к свойствам request.user или request.auth.

По умолчанию:

[
    'rest_framework.authentication.SessionAuthentication',
    'rest_framework.authentication.BasicAuthentication'
]

DEFAULT_PERMISSION_CLASSES

Список или кортеж классов разрешений, который определяет набор разрешений по умолчанию, проверяемых при запуске представления. Разрешение должно быть предоставлено каждым классом в списке.

По умолчанию:

[
    'rest_framework.permissions.AllowAny',
]

DEFAULT_THROTTLE_CLASSES

Список или кортеж классов дросселей, который определяет набор дросселей по умолчанию, проверяемых при запуске представления.

По умолчанию: [].

DEFAULT_CONTENT_NEGOTIATION_CLASS

Класс согласования содержимого, который определяет, как выбирается рендерер для ответа, учитывая входящий запрос.

По умолчанию: 'rest_framework.negotiation.DefaultContentNegotiation'.

DEFAULT_SCHEMA_CLASS

Класс инспектора представлений, который будет использоваться для генерации схемы.

По умолчанию: 'rest_framework.schemas.openapi.AutoSchema'.


Общие настройки представления

Следующие настройки управляют поведением общих представлений на основе классов.

DEFAULT_FILTER_BACKENDS

Список классов бэкенда фильтра, которые должны использоваться для общей фильтрации. Если установлено значение None, то общая фильтрация отключена.

DEFAULT_PAGINATION_CLASS

Класс по умолчанию, используемый для пагинации наборов запросов. Если установлено значение None, пагинация по умолчанию отключена. Дополнительное руководство по установке и изменению стиля пагинации см. в документации по пагинации.

По умолчанию: None

PAGE_SIZE

Размер страницы по умолчанию, используемый для пагинации. Если установлено значение None, то по умолчанию пагинация отключена.

По умолчанию: None

SEARCH_PARAM

Имя параметра запроса, который может быть использован для указания поискового термина, используемого SearchFilter.

По умолчанию: search.

ORDERING_PARAM

Имя параметра запроса, который может быть использован для указания упорядочения результатов, возвращаемых OrderingFilter.

По умолчанию: ordering.


Настройки версий

DEFAULT_VERSION

Значение, которое должно использоваться для request.version, когда информация о версиях отсутствует.

По умолчанию: None

ALLOWED_VERSIONS

Если задано, это значение ограничивает набор версий, которые могут быть возвращены схемой версий, и вызывает ошибку, если предоставленная версия не входит в этот набор.

По умолчанию: None

VERSION_PARAM

Строка, которая должна использоваться для любых параметров версионирования, например, в типе медиа или параметрах запроса URL.

По умолчанию: 'version'.

DEFAULT_VERSIONING_CLASS

Схема версионирования, используемая по умолчанию.

По умолчанию: None


Настройки аутентификации

Следующие настройки управляют поведением неаутентифицированных запросов.

UNAUTHENTICATED_USER

Класс, который должен использоваться для инициализации request.user для неаутентифицированных запросов. (Если аутентификация полностью удалена, например, путем удаления django.contrib.auth из INSTALLED_APPS, установите UNAUTHENTICATED_USER в None).

По умолчанию: django.contrib.auth.models.AnonymousUser.

UNAUTHENTICATED_TOKEN

Класс, который должен использоваться для инициализации request.auth для неаутентифицированных запросов.

По умолчанию: Нет


Настройки тестов

Следующие настройки управляют поведением APIRequestFactory и APIClient.

TEST_REQUEST_DEFAULT_FORMAT

Формат по умолчанию, который следует использовать при составлении тестовых запросов.

Он должен совпадать с форматом одного из классов рендереров в настройке TEST_REQUEST_RENDERER_CLASSES.

По умолчанию: 'multipart'.

TEST_REQUEST_RENDERER_CLASSES

Классы рендереров, которые поддерживаются при построении тестовых запросов.

Формат любого из этих классов рендереров может быть использован при построении тестового запроса, например: client.post('/users', {'username': 'jamie'}, format='json').

По умолчанию:

[
    'rest_framework.renderers.MultiPartRenderer',
    'rest_framework.renderers.JSONRenderer'
]

Элементы управления генерацией схемы

SCHEMA_COERCE_PATH_PK

Если задано, то при генерации параметра пути к схеме идентификатор 'pk' в URL conf сопоставляется с реальным именем поля. Обычно это 'id'. Это дает более подходящее представление, поскольку "первичный ключ" - это деталь реализации, тогда как "идентификатор" - более общая концепция.

По умолчанию: True

SCHEMA_COERCE_METHOD_NAMES

Если установлено, это используется для сопоставления внутренних имен методов набора представлений с именами внешних действий, используемых при генерации схемы. Это позволяет нам генерировать имена, более подходящие для внешнего представления, чем те, которые используются внутри кодовой базы.

По умолчанию: {'retrieve': 'read', 'destroy': 'delete'}


Контроль типа содержимого

URL_FORMAT_OVERRIDE

Имя параметра URL, который можно использовать для переопределения стандартного поведения заголовка согласования содержимого Accept, используя параметр запроса format=... в URL запроса.

Например: http://example.com/organizations/?format=csv

Если значение этого параметра равно None, то переопределение формата URL будет отключено.

По умолчанию: 'format'.

FORMAT_SUFFIX_KWARG

Имя параметра в URL conf, который может быть использован для обеспечения суффикса формата. Этот параметр применяется при использовании format_suffix_patterns для включения суффиксных шаблонов URL.

Например: http://example.com/organizations.csv/

По умолчанию: 'format'.


Форматирование даты и времени

Следующие параметры используются для управления тем, как представления даты и времени могут быть разобраны и отображены.

DATETIME_FORMAT

Строка формата, которая должна использоваться по умолчанию для вывода полей сериализатора DateTimeField. Если None, то поля сериализатора DateTimeField будут возвращать объекты Python datetime, а кодировка времени будет определяться рендерером.

Может быть любым из None, 'iso-8601' или строкой Python strftime format.

По умолчанию: 'iso-8601'.

DATETIME_INPUT_FORMATS

Список форматных строк, которые должны использоваться по умолчанию при разборе входных данных для полей сериализатора DateTimeField.

Может быть списком, включающим строку 'iso-8601' или строки Python strftime format.

По умолчанию: ['iso-8601'].

DATE_FORMAT

Строка формата, которая должна использоваться по умолчанию для вывода полей сериализатора DateField. Если None, то поля сериализатора DateField будут возвращать объекты Python date, а кодировка даты будет определяться рендерером.

Может быть любым из None, 'iso-8601' или строкой Python strftime format.

По умолчанию: 'iso-8601'.

DATE_INPUT_FORMATS

Список форматных строк, которые должны использоваться по умолчанию при разборе входных данных для полей сериализатора DateField.

Может быть списком, включающим строку 'iso-8601' или строки Python strftime format.

По умолчанию: ['iso-8601'].

TIME_FORMAT

Строка формата, которая должна использоваться по умолчанию для вывода полей сериализатора TimeField. Если None, то поля сериализатора TimeField будут возвращать объекты Python time, а кодировка времени будет определяться рендерером.

Может быть любым из None, 'iso-8601' или строкой Python strftime format.

По умолчанию: 'iso-8601'.

TIME_INPUT_FORMATS

Список форматных строк, которые должны использоваться по умолчанию при разборе входных данных для полей сериализатора TimeField.

Может быть списком, включающим строку 'iso-8601' или строки Python strftime format.

По умолчанию: ['iso-8601'].


Кодировки

UNICODE_JSON

Если установлено значение True, ответы JSON будут разрешать использование символов юникода в ответах. Например:

{"unicode black star":"★"}

Если установлено значение False, в ответах JSON будут экранироваться неасксиальные символы, как показано ниже:

{"unicode black star":"\u2605"}

Оба стиля соответствуют RFC 4627 и являются синтаксически правильным JSON. Стиль unicode предпочтительнее, так как он более удобен при проверке ответов API.

По умолчанию: True

COMPACT_JSON

Если установлено значение True, ответы JSON будут возвращать компактные представления, без пробелов после символов ':' и ','. Например:

{"is_admin":false,"email":"jane@example"}

Если установлено значение False, ответы JSON будут возвращать более подробное представление, как показано ниже:

{"is_admin": false, "email": "jane@example"}

По умолчанию возвращаются минифицированные ответы, в соответствии с Heroku's API design guidelines.

По умолчанию: True

STRICT_JSON

Если установлено значение True, при рендеринге и разборе JSON будет использоваться только синтаксически правильный JSON, создавая исключение для расширенных значений float (nan, inf, inf), принимаемых модулем Python json. Это рекомендуемая настройка, так как эти значения обычно не поддерживаются. Например, ни Javascript JSON.Parse, ни PostgreSQL тип данных JSON не принимают эти значения.

Если установлено значение False, рендеринг и парсинг JSON будут разрешительными. Однако эти значения все еще недействительны и должны быть специально обработаны в вашем коде.

По умолчанию: True

COERCE_DECIMAL_TO_STRING

При возврате десятичных объектов в представлениях API, которые не поддерживают собственный десятичный тип, обычно лучше всего возвращать значение в виде строки. Это позволяет избежать потери точности, которая происходит при двоичной реализации с плавающей запятой.

Если установлено значение True, сериализатор класса DecimalField будет возвращать строки вместо объектов Decimal. Если установлено значение False, сериализаторы будут возвращать объекты Decimal, которые кодировщик JSON по умолчанию будет возвращать как float.

По умолчанию: True


Названия и описания представлений

Следующие настройки используются для создания названий и описаний представлений, которые используются в ответах на запросы OPTIONS и в API для просмотра.

VIEW_NAME_FUNCTION

Строка, представляющая функцию, которая должна использоваться при генерации имен представлений.

Это должна быть функция со следующей сигнатурой:

view_name(self)
  • self: Экземпляр представления. Обычно функция name проверяет имя класса при генерации описательного имени, обращаясь к self.__class__.__name__.

Если экземпляр представления наследует ViewSet, он может быть инициализирован с несколькими необязательными аргументами:

  • name: Имя, явно предоставленное представлению в наборе представлений. Обычно это значение должно использоваться как есть, если оно предоставлено.

  • suffix: Текст, используемый для различения отдельных представлений в наборе представлений. Этот аргумент является взаимоисключающим с name.

  • detail: Булево значение, отличающее индивидуальное представление в наборе представлений как "список" или "подробное представление".

По умолчанию: 'rest_framework.views.get_view_name'.

VIEW_DESCRIPTION_FUNCTION

Строка, представляющая функцию, которая должна использоваться при генерации описаний представлений.

Этот параметр может быть изменен для поддержки стилей разметки, отличных от стандартного markdown. Например, вы можете использовать его для поддержки разметки rst в ваших документах представления, выводимых в Web-интерфейсе API.

Это должна быть функция со следующей сигнатурой:

view_description(self, html=False)
  • self: Экземпляр представления. Обычно функция описания проверяет строку документа класса при генерации описания, обращаясь к self.__class__.__doc__.

  • html: Булево значение, указывающее, требуется ли вывод HTML. True используется в API для просмотра, а False - при генерации ответов OPTIONS.

Если экземпляр представления наследует ViewSet, он может быть инициализирован с несколькими необязательными аргументами:

  • description: Описание, явно предоставленное представлению в наборе представлений. Обычно оно устанавливается дополнительными действиями набора представлений и должно использоваться как есть.

По умолчанию: 'rest_framework.views.get_view_description'.

HTML Select Field cutoffs

Глобальные настройки для выбора отсечений полей для визуализации реляционных полей в Web-интерфейсе API.

HTML_SELECT_CUTOFF

Глобальная настройка для значения html_cutoff. Должно быть целое число.

По умолчанию: 1000

HTML_SELECT_CUTOFF_TEXT

Строка, представляющая глобальную настройку для html_cutoff_text.

По умолчанию: 'More than {count} items...'.


Разные настройки

EXCEPTION_HANDLER

Строка, представляющая функцию, которая должна быть использована при возврате ответа для любого данного исключения. Если функция возвращает None, будет выдана ошибка 500.

Этот параметр может быть изменен для поддержки ответов на ошибки, отличных от ответов по умолчанию {"detail": "Сбой..."}} ответов. Например, вы можете использовать его для предоставления ответов API типа {"errors": [{"message": "Failure...", "code": ""} ...]}.

Это должна быть функция со следующей сигнатурой:

exception_handler(exc, context)
  • exc: Исключение.

По умолчанию: 'rest_framework.views.exception_handler'.

NON_FIELD_ERRORS_KEY

Строка, представляющая ключ, который следует использовать для ошибок сериализатора, которые не относятся к конкретному полю, а являются общими ошибками.

По умолчанию: 'non_field_errors'.

URL_FIELD_NAME

Строка, представляющая ключ, который должен использоваться для полей URL, генерируемых HyperlinkedModelSerializer.

По умолчанию: 'url'

NUM_PROXIES

Целое число, равное 0 или более, которое может использоваться для указания количества прокси-серверов приложений, за которыми работает API. Это позволяет дросселированию более точно определять IP-адреса клиентов. Если установлено значение None, то классы дросселирования будут использовать менее строгое сопоставление IP-адресов.

По умолчанию: None

Last updated