Настройки

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

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

Вернуться на верх