Настройки¶
Пространства имен - это отличная идея, давайте делать их больше!
‒ The Zen of Python
Конфигурация для фреймворка REST разнесена по именам внутри одной настройки Django с именем REST_FRAMEWORK
.
Например, файл settings.py
вашего проекта может содержать что-то вроде этого:
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': [
'rest_framework.renderers.JSONRenderer',
],
'DEFAULT_PARSER_CLASSES': [
'rest_framework.parsers.JSONParser',
]
}
Доступ к настройкам¶
Если в вашем проекте необходимо получить доступ к значениям настроек API фреймворка REST, следует использовать объект api_settings
. Например.
from rest_framework.settings import api_settings
print(api_settings.DEFAULT_AUTHENTICATION_CLASSES)
Объект api_settings
будет проверять наличие любых пользовательских настроек, а в противном случае вернется к значениям по умолчанию. Любая настройка, использующая строковые пути импорта для ссылки на класс, будет автоматически импортировать и возвращать класс, на который ссылается, вместо строкового литерала.
Справочник по API¶
Настройки политики API¶
*Следующие настройки управляют основными политиками API и применяются к каждому представлению, основанному на классах, или представлению, основанному на функциях.
КЛАССЫ_РЕНДЕРЕРА_ПО_УМОЛЧАНИЮ¶
Список или кортеж классов рендереров, определяющий набор рендереров по умолчанию, которые могут быть использованы при возврате объекта Response
.
По умолчанию:
[
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
]
КЛАССЫ_ПАРСЕРА_ПО_УМОЛЧАНИЮ¶
Список или кортеж классов парсеров, определяющий набор парсеров по умолчанию, используемых при обращении к свойству request.data
.
По умолчанию:
[
'rest_framework.parsers.JSONParser',
'rest_framework.parsers.FormParser',
'rest_framework.parsers.MultiPartParser'
]
КЛАССЫ_АУТЕНТИФИКАЦИИ_ПО_УМОЛЧАНИЮ¶
Список или кортеж классов аутентификации, определяющий набор аутентификаторов по умолчанию, используемых при обращении к свойствам request.user
или request.auth
.
По умолчанию:
[
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication'
]
КЛАССЫ_РАЗРЕШЕНИЙ_ПО_УМОЛЧАНИЮ¶
Список или кортеж классов разрешений, который определяет набор разрешений по умолчанию, проверяемых при запуске представления. Разрешение должно быть предоставлено каждым классом в списке.
По умолчанию:
[
'rest_framework.permissions.AllowAny',
]
КЛАССЫ_ДРОССЕЛЯ_ПО_УМОЛЧАНИЮ¶
Список или кортеж классов дросселей, который определяет набор дросселей по умолчанию, проверяемых при запуске представления.
По умолчанию: []
КЛАСС_СОДЕРЖАНИЯ_ПЕРЕГОВОРОВ_ПО_УМОЛЧАНИЮ¶
Класс согласования содержимого, который определяет, как выбирается рендерер для ответа, учитывая входящий запрос.
По умолчанию: 'rest_framework.negotiation.DefaultContentNegotiation'
КЛАСС_СХЕМЫ_ПО_УМОЛЧАНИЮ¶
Класс инспектора представлений, который будет использоваться для генерации схемы.
По умолчанию: 'rest_framework.schemas.openapi.AutoSchema'
Общие настройки представления¶
The following settings control the behavior of the generic class-based views.
DEFAULT_FILTER_BACKENDS¶
Список классов бэкенда фильтра, которые должны использоваться для общей фильтрации. Если установлено значение None
, то общая фильтрация отключена.
КЛАСС_ПАГИНАЦИИ_ПО_УМОЛЧАНИЮ¶
Класс по умолчанию, используемый для пагинации наборов запросов. Если установлено значение None
, пагинация по умолчанию отключена. Дополнительные указания по setting и modifying стилю пагинации см. в документации по пагинации.
По умолчанию: None
РАЗМЕР СТРАНИЦЫ¶
Размер страницы по умолчанию, используемый для пагинации. Если установлено значение None
, то по умолчанию пагинация отключена.
По умолчанию: None
ПОИСК_ПАРАМ¶
Имя параметра запроса, который можно использовать для указания поискового термина, используемого SearchFilter
.
По умолчанию: search
ЗАКАЗНОЙ ПАРАМЕТР¶
Имя параметра запроса, который может быть использован для указания упорядочения результатов, возвращаемых OrderingFilter
.
По умолчанию: ordering
Настройки версий¶
ВЕРСИЯ ПО УМОЛЧАНИЮ¶
Значение, которое должно использоваться для request.version
, когда информация о версиях отсутствует.
По умолчанию: None
ДОПУСТИМЫЕ_ВЕРСИИ¶
Если задано, это значение ограничивает набор версий, которые могут быть возвращены схемой версий, и вызывает ошибку, если предоставленная версия не входит в этот набор.
По умолчанию: None
VERSION_PARAM¶
Строка, которая должна использоваться для любых параметров версионирования, например, в типе медиа или параметрах запроса URL.
По умолчанию: 'version'
Настройки аутентификации¶
The following settings control the behavior of unauthenticated requests.
НЕАУТЕНТИФИЦИРОВАННЫЙ_ПОЛЬЗОВАТЕЛЬ¶
Класс, который должен использоваться для инициализации request.user
для неаутентифицированных запросов. (При полном удалении аутентификации, например, удалении django.contrib.auth
из INSTALLED_APPS
, установите UNAUTHENTICATED_USER
в None
).
По умолчанию: django.contrib.auth.models.AnonymousUser
НЕАУТЕНТИФИЦИРОВАННЫЙ_ТОКЕН¶
Класс, который должен использоваться для инициализации request.auth
для неаутентифицированных запросов.
По умолчанию: None
Настройки тестирования¶
The following settings control the behavior of APIRequestFactory and 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'
Форматирование даты и времени¶
The following settings are used to control how date and time representations may be parsed and rendered.
ФОРМАТ_ВРЕМЕНИ_ДАТЫ¶
Строка формата, которая должна использоваться по умолчанию для рендеринга вывода полей сериализатора DateTimeField
. Если None
, то DateTimeField
поля сериализатора будут возвращать объекты Python datetime
, а кодировка времени даты будет определяться рендерером.
Может быть любой из None
, 'iso-8601'
или строкой Python strftime format.
По умолчанию: 'iso-8601'
ФОРМАТЫ_ВВОДА_ДАННЫХ¶
Список форматных строк, которые должны использоваться по умолчанию для разбора входов в поля сериализатора DateTimeField
.
Может быть списком, включающим строку 'iso-8601'
или строки Python strftime format.
По умолчанию: ['iso-8601']
ДАТА_ФОРМАТ¶
Строка формата, которая должна использоваться по умолчанию для рендеринга вывода полей сериализатора DateField
. Если None
, то DateField
поля сериализатора будут возвращать объекты Python date
, а кодировка даты будет определяться рендерером.
Может быть любой из None
, 'iso-8601'
или строкой Python strftime format.
По умолчанию: 'iso-8601'
ФОРМАТЫ_ВВОДА_ДАТ¶
Список форматных строк, которые должны использоваться по умолчанию для разбора входов в поля сериализатора DateField
.
Может быть списком, включающим строку 'iso-8601'
или строки Python strftime format.
По умолчанию: ['iso-8601']
ВРЕМЯ_ФОРМАТ¶
Строка формата, которая должна использоваться по умолчанию для рендеринга вывода полей сериализатора TimeField
. Если None
, то TimeField
поля сериализатора будут возвращать объекты Python time
, а кодировка времени будет определяться рендерером.
Может быть любой из None
, 'iso-8601'
или строкой Python strftime format.
По умолчанию: 'iso-8601'
ФОРМАТЫ_ВВОДА_ВРЕМЕНИ¶
Список форматных строк, которые должны использоваться по умолчанию для разбора входов в поля сериализатора TimeField
.
Может быть списком, включающим строку 'iso-8601'
или строки Python strftime format.
По умолчанию: ['iso-8601']
Кодировки¶
UNICODE_JSON¶
Если установлено значение True
, ответы JSON будут допускать использование символов юникода в ответах. Например:
{"unicode black star":"★"}
Если установлено значение False
, ответы JSON будут экранировать неасксиальные символы, как показано ниже:
{"unicode black star":"**u2605"}
Оба стиля соответствуют :doc:`RFC 4627 <https://www.ietf.org/rfc/rfc4627.txt>`** , и являются синтаксически правильным 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
>, ни тип данных JSON в PostgreSQL не принимают эти значения.
Если установлено значение False
, рендеринг и парсинг JSON будет разрешен. Однако, эти значения все еще недействительны и должны быть специально обработаны в вашем коде.
По умолчанию: True
COERCE_DECIMAL_TO_STRING¶
При возврате десятичных объектов в представлениях API, которые не поддерживают собственный десятичный тип, обычно лучше всего возвращать значение в виде строки. Это позволяет избежать потери точности, которая происходит при двоичной реализации с плавающей запятой.
Когда установлено значение True
, сериализатор DecimalField
класса будет возвращать строки вместо Decimal
объектов. Если установлено значение False
, сериализаторы будут возвращать Decimal
объекты, которые кодировщик JSON по умолчанию будет возвращать в виде плавающих значений.
По умолчанию: True
Просмотр названий и описаний¶
Следующие настройки используются для создания названий и описаний представлений, которые используются в ответах на запросы ``OPTIONS``, а также в API для просмотра..
ИМЯ_ВИДА_ФУНКЦИЯ¶
Строка, представляющая функцию, которая должна использоваться при генерации имен представлений.
Это должна быть функция со следующей сигнатурой:
view_name(self)
self
: Экземпляр представления. Обычно функция name проверяет имя класса при генерации описательного имени, обращаясь кself.__class__.__name__
.
Если экземпляр представления наследует ViewSet
, он может быть инициализирован с несколькими необязательными аргументами:
name
: Имя, явно предоставленное представлению в наборе представлений. Обычно это значение следует использовать как есть, когда оно предоставлено.suffix
: Текст, используемый при дифференциации отдельных видов в наборе видов. Этот аргумент является взаимоисключающим дляname
.detail
: Булево значение, которое отличает отдельное представление в наборе представлений как «список» или «подробное» представление.
По умолчанию: 'rest_framework.views.get_view_name'
VIEW_DESCRIPTION_FUNCTION¶
Строка, представляющая функцию, которая должна использоваться при генерации описаний представлений.
Этот параметр может быть изменен для поддержки стилей разметки, отличных от стандартной разметки. Например, вы можете использовать его для поддержки разметки rst
в ваших документах представления, выводимых в просматриваемом API.
Это должна быть функция со следующей сигнатурой:
view_description(self, html=False)
self
: Экземпляр представления. Обычно функция описания проверяет doc-строку класса при генерации описания, обращаясь кself.__class__.__doc__
.html
: Булево значение, указывающее, требуется ли вывод HTML.True
при использовании в просматриваемом API, иFalse
при использовании в генерацииOPTIONS
ответов.
Если экземпляр представления наследует ViewSet
, он может быть инициализирован с несколькими необязательными аргументами:
description
: Описание, явно предоставленное виду в наборе представлений. Обычно оно задается дополнительными наборами представленийaction
s, и должно использоваться как есть.
По умолчанию: 'rest_framework.views.get_view_description'
HTML Выбор полей отсечения¶
Глобальные настройки для select field cutoffs for rendering relational fields в просматриваемом API.
HTML_SELECT_CUTOFF¶
Глобальная настройка для значения html_cutoff
. Должно быть целым числом.
По умолчанию: 1000
HTML_SELECT_CUTOFF_TEXT¶
Строка, представляющая глобальную настройку для html_cutoff_text
.
По умолчанию: "More than {count} items..."
Различные настройки¶
ОБРАБОТЧИК ИСКЛЮЧЕНИЙ¶
Строка, представляющая функцию, которая должна быть использована при возврате ответа для любого заданного исключения. Если функция возвращает None
, будет выдана ошибка 500.
Этот параметр может быть изменен для поддержки ответов на ошибки, отличных от ответов по умолчанию {"detail": "Failure..."}
. Например, вы можете использовать его для предоставления ответов API типа {"errors": [{"message": "Failure...", "code": ""} ...]}
.
Это должна быть функция со следующей сигнатурой:
exception_handler(exc, context)
<<< 0 >>** : Исключение.
По умолчанию: 'rest_framework.views.exception_handler'
НЕ_ПОЛЕВЫЕ_ОШИБКИ_КЛЮЧ¶
Строка, представляющая ключ, который следует использовать для ошибок сериализатора, которые не относятся к конкретному полю, а являются общими ошибками.
По умолчанию: 'non_field_errors'
URL_FIELD_NAME¶
Строка, представляющая ключ, который должен использоваться для полей URL, генерируемых HyperlinkedModelSerializer
.
По умолчанию: 'url'
NUM_PROXIES¶
Целое число от 0 и более, которое можно использовать для указания количества прокси-серверов приложений, за которыми работает API. Это позволяет дросселированию более точно определять IP-адреса клиентов. Если установлено значение None
, то классы дросселирования будут использовать менее строгое сопоставление IP-адресов.
По умолчанию: None