Настройки
Настройки
Пространства имен - это отличная идея - давайте делать их больше!
Конфигурация для DRF находится в едином пространстве имен в настройках Django под названием REST_FRAMEWORK
.
Например, файл settings.py
вашего проекта может содержать что-то вроде этого:
Доступ к настройкам
Если вам необходимо получить доступ к значениям настроек API DRF в вашем проекте, вам следует использовать объект api_settings
. Например.
Объект api_settings
будет проверять наличие любых пользовательских настроек и в противном случае возвращаться к значениям по умолчанию. Любая настройка, использующая строковые пути импорта для ссылки на класс, будет автоматически импортировать и возвращать класс, на который ссылается, вместо строкового литерала.
API Reference
Настройки политики API
Следующие настройки управляют основными политиками API и применяются к каждому представлению APIView
на основе класса или @api_view
на основе функции.
DEFAULT_RENDERER_CLASSES
Список или кортеж классов рендереров, определяющий набор рендереров по умолчанию, которые могут быть использованы при возврате объекта Response
.
По умолчанию:
DEFAULT_PARSER_CLASSES
Список или кортеж классов парсеров, определяющий набор парсеров по умолчанию, используемых при обращении к свойству request.data
.
По умолчанию:
DEFAULT_AUTHENTICATION_CLASSES
Список или кортеж классов аутентификации, определяющий набор аутентификаторов по умолчанию, используемых при обращении к свойствам request.user
или request.auth
.
По умолчанию:
DEFAULT_PERMISSION_CLASSES
Список или кортеж классов разрешений, который определяет набор разрешений по умолчанию, проверяемых при запуске представления. Разрешение должно быть предоставлено каждым классом в списке.
По умолчанию:
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')
.
По умолчанию:
Элементы управления генерацией схемы
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 будут разрешать использование символов юникода в ответах. Например:
Если установлено значение False
, в ответах JSON будут экранироваться неасксиальные символы, как показано ниже:
Оба стиля соответствуют RFC 4627 и являются синтаксически правильным JSON. Стиль unicode предпочтительнее, так как он более удобен при проверке ответов API.
По умолчанию: True
COMPACT_JSON
Если установлено значение True
, ответы JSON будут возвращать компактные представления, без пробелов после символов ':'
и ','
. Например:
Если установлено значение False
, ответы JSON будут возвращать более подробное представление, как показано ниже:
По умолчанию возвращаются минифицированные ответы, в соответствии с 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
Строка, представляющая функцию, которая должна использоваться при генерации имен представлений.
Это должна быть функция со следующей сигнатурой:
self
: Экземпляр представления. Обычно функция name проверяет имя класса при генерации описательного имени, обращаясь кself.__class__.__name__
.
Если экземпляр представления наследует ViewSet
, он может быть инициализирован с несколькими необязательными аргументами:
name
: Имя, явно предоставленное представлению в наборе представлений. Обычно это значение должно использоваться как есть, если оно предоставлено.suffix
: Текст, используемый для различения отдельных представлений в наборе представлений. Этот аргумент является взаимоисключающим сname
.detail
: Булево значение, отличающее индивидуальное представление в наборе представлений как "список" или "подробное представление".
По умолчанию: 'rest_framework.views.get_view_name'
.
VIEW_DESCRIPTION_FUNCTION
Строка, представляющая функцию, которая должна использоваться при генерации описаний представлений.
Этот параметр может быть изменен для поддержки стилей разметки, отличных от стандартного markdown. Например, вы можете использовать его для поддержки разметки rst
в ваших документах представления, выводимых в Web-интерфейсе API.
Это должна быть функция со следующей сигнатурой:
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": ""} ...]}
.
Это должна быть функция со следующей сигнатурой:
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