Пространства имен - это отличная идея - давайте делать их больше!
Конфигурация для 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 и применяются к каждому представлению APIView
на основе класса или @api_view
на основе функции.
Список или кортеж классов рендереров, определяющий набор рендереров по умолчанию, которые могут быть использованы при возврате объекта 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'
.
Следующие настройки управляют поведением общих представлений на основе классов.
Список классов бэкенда фильтра, которые должны использоваться для общей фильтрации. Если установлено значение None
, то общая фильтрация отключена.
Класс по умолчанию, используемый для пагинации наборов запросов. Если установлено значение None
, пагинация по умолчанию отключена. Дополнительное руководство по установке и изменению стиля пагинации см. в документации по пагинации.
По умолчанию: None
Размер страницы по умолчанию, используемый для пагинации. Если установлено значение None
, то по умолчанию пагинация отключена.
По умолчанию: None
Имя параметра запроса, который может быть использован для указания поискового термина, используемого SearchFilter
.
По умолчанию: search
.
Имя параметра запроса, который может быть использован для указания упорядочения результатов, возвращаемых OrderingFilter
.
По умолчанию: ordering
.
Значение, которое должно использоваться для request.version
, когда информация о версиях отсутствует.
По умолчанию: None
Если задано, это значение ограничивает набор версий, которые могут быть возвращены схемой версий, и вызывает ошибку, если предоставленная версия не входит в этот набор.
По умолчанию: None
Строка, которая должна использоваться для любых параметров версионирования, например, в типе медиа или параметрах запроса URL.
По умолчанию: 'version'
.
Схема версионирования, используемая по умолчанию.
По умолчанию: None
Следующие настройки управляют поведением неаутентифицированных запросов.
Класс, который должен использоваться для инициализации request.user
для неаутентифицированных запросов. (Если аутентификация полностью удалена, например, путем удаления django.contrib.auth
из INSTALLED_APPS
, установите UNAUTHENTICATED_USER
в None
).
По умолчанию: django.contrib.auth.models.AnonymousUser
.
Класс, который должен использоваться для инициализации request.auth
для неаутентифицированных запросов.
По умолчанию: Нет
Следующие настройки управляют поведением APIRequestFactory и APIClient.
Формат по умолчанию, который следует использовать при составлении тестовых запросов.
Он должен совпадать с форматом одного из классов рендереров в настройке TEST_REQUEST_RENDERER_CLASSES
.
По умолчанию: 'multipart'
.
Классы рендереров, которые поддерживаются при построении тестовых запросов.
Формат любого из этих классов рендереров может быть использован при построении тестового запроса, например: client.post('/users', {'username': 'jamie'}, format='json')
.
По умолчанию:
[
'rest_framework.renderers.MultiPartRenderer',
'rest_framework.renderers.JSONRenderer'
]
Если задано, то при генерации параметра пути к схеме идентификатор 'pk'
в URL conf сопоставляется с реальным именем поля. Обычно это 'id'
. Это дает более подходящее представление, поскольку "первичный ключ" - это деталь реализации, тогда как "идентификатор" - более общая концепция.
По умолчанию: True
Если установлено, это используется для сопоставления внутренних имен методов набора представлений с именами внешних действий, используемых при генерации схемы. Это позволяет нам генерировать имена, более подходящие для внешнего представления, чем те, которые используются внутри кодовой базы.
По умолчанию: {'retrieve': 'read', 'destroy': 'delete'}
Имя параметра URL, который можно использовать для переопределения стандартного поведения заголовка согласования содержимого Accept
, используя параметр запроса format=...
в URL запроса.
Например: http://example.com/organizations/?format=csv
Если значение этого параметра равно None
, то переопределение формата URL будет отключено.
По умолчанию: 'format'
.
Имя параметра в URL conf, который может быть использован для обеспечения суффикса формата. Этот параметр применяется при использовании format_suffix_patterns
для включения суффиксных шаблонов URL.
Например: http://example.com/organizations.csv/
По умолчанию: 'format'
.
Следующие параметры используются для управления тем, как представления даты и времени могут быть разобраны и отображены.
Строка формата, которая должна использоваться по умолчанию для вывода полей сериализатора 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']
.
Если установлено значение True
, ответы JSON будут разрешать использование символов юникода в ответах. Например:
{"unicode black star":"★"}
Если установлено значение False
, в ответах JSON будут экранироваться неасксиальные символы, как показано ниже:
{"unicode black star":"\u2605"}
Оба стиля соответствуют RFC 4627 и являются синтаксически правильным JSON. Стиль unicode предпочтительнее, так как он более удобен при проверке ответов API.
По умолчанию: True
Если установлено значение True
, ответы JSON будут возвращать компактные представления, без пробелов после символов ':'
и ','
. Например:
{"is_admin":false,"email":"jane@example"}
Если установлено значение False
, ответы JSON будут возвращать более подробное представление, как показано ниже:
{"is_admin": false, "email": "jane@example"}
По умолчанию возвращаются минифицированные ответы, в соответствии с Heroku's API design guidelines.
По умолчанию: True
Если установлено значение True
, при рендеринге и разборе JSON будет использоваться только синтаксически правильный JSON, создавая исключение для расширенных значений float (nan
, inf
, inf
), принимаемых модулем Python json
. Это рекомендуемая настройка, так как эти значения обычно не поддерживаются. Например, ни Javascript JSON.Parse
, ни PostgreSQL тип данных JSON не принимают эти значения.
Если установлено значение False
, рендеринг и парсинг JSON будут разрешительными. Однако эти значения все еще недействительны и должны быть специально обработаны в вашем коде.
По умолчанию: True
При возврате десятичных объектов в представлениях API, которые не поддерживают собственный десятичный тип, обычно лучше всего возвращать значение в виде строки. Это позволяет избежать потери точности, которая происходит при двоичной реализации с плавающей запятой.
Если установлено значение True
, сериализатор класса DecimalField
будет возвращать строки вместо объектов Decimal
. Если установлено значение False
, сериализаторы будут возвращать объекты Decimal
, которые кодировщик JSON по умолчанию будет возвращать как float.
По умолчанию: True
Следующие настройки используются для создания названий и описаний представлений, которые используются в ответах на запросы OPTIONS
и в API для просмотра.
Строка, представляющая функцию, которая должна использоваться при генерации имен представлений.
Это должна быть функция со следующей сигнатурой:
view_name(self)
self
: Экземпляр представления. Обычно функция name проверяет имя класса при генерации описательного имени, обращаясь кself.__class__.__name__
.
Если экземпляр представления наследует ViewSet
, он может быть инициализирован с несколькими необязательными аргументами:
name
: Имя, явно предоставленное представлению в наборе представлений. Обычно это значение должно использоваться как есть, если оно предоставлено.suffix
: Текст, используемый для различения отдельных представлений в наборе представлений. Этот аргумент является взаимоисключающим сname
.detail
: Булево значение, отличающее индивидуальное представление в наборе представлений как "список" или "подробное представление".
По умолчанию: 'rest_framework.views.get_view_name'
.
Строка, представляющая функцию, которая должна использоваться при генерации описаний представлений.
Этот параметр может быть изменен для поддержки стилей разметки, отличных от стандартного 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'
.
Глобальные настройки для выбора отсечений полей для визуализации реляционных полей в Web-интерфейсе API.
Глобальная настройка для значения html_cutoff
. Должно быть целое число.
По умолчанию: 1000
Строка, представляющая глобальную настройку для html_cutoff_text
.
По умолчанию: 'More than {count} items...'
.
Строка, представляющая функцию, которая должна быть использована при возврате ответа для любого данного исключения. Если функция возвращает None
, будет выдана ошибка 500.
Этот параметр может быть изменен для поддержки ответов на ошибки, отличных от ответов по умолчанию {"detail": "Сбой..."}}
ответов. Например, вы можете использовать его для предоставления ответов API типа {"errors": [{"message": "Failure...", "code": ""} ...]}
.
Это должна быть функция со следующей сигнатурой:
exception_handler(exc, context)
exc
: Исключение.
По умолчанию: 'rest_framework.views.exception_handler'
.
Строка, представляющая ключ, который следует использовать для ошибок сериализатора, которые не относятся к конкретному полю, а являются общими ошибками.
По умолчанию: 'non_field_errors'
.
Строка, представляющая ключ, который должен использоваться для полей URL, генерируемых HyperlinkedModelSerializer
.
По умолчанию: 'url'
Целое число, равное 0 или более, которое может использоваться для указания количества прокси-серверов приложений, за которыми работает API. Это позволяет дросселированию более точно определять IP-адреса клиентов. Если установлено значение None
, то классы дросселирования будут использовать менее строгое сопоставление IP-адресов.
По умолчанию: None