Upgrading djangorestframework 2 to 3
Breaking2.4.8 → 3.18.3Breaking3Security7Platform3Deprecated1New11Changed2Fixed26Other8
Fetching 81 releases from GitHub…7 / 81
SecurityHighGHSA-33wh-fxxf-88vv hardens content negotiation against large Accept headers.GHSA-33wh-fxxf-88vv · CVE-2026-114138 ↗
BreakingUpgrade verdict
3 breaking changes and 3 platform requirement changes and 7 security fixes.
In plain terms
- This version no longer works with older Django releases; you must upgrade Django to use it.
- The old coreapi-based schema support is gone, so code relying on it must switch to the OpenAPI schema generation.
- Validation errors from serializers used with many=True now come back as a dictionary instead of a list, so code that reads those errors may need updating.
- The package can now be used with Python 3.15.
Must act Top 5 of 14 that need code or config changes
Requires Python >=3.10 from 3.17.0 (none stated before).
Adds django >=5.2.
Installs 3 packages in all (was 0).
Also installs asgiref, sqlparse.
What you must change
Breaking3
Drops support for Django 4.2, Django 5.0 and Django 5.1.
Removes deprecated coreapi support.
coreapiChanges error output for list serializers (many=True) to dict format.
many=TrueSecurity7
GHSA-33wh-fxxf-88vv hardens content negotiation against large Accept headers.
AcceptHighGHSA-3547-9m27-7rxg refuses non-text encoding charsets.
HighGHSA-xw6w-gcfp-cf8m makes TokenProxy deletion actually delete the token.
TokenProxyHighFixes disclosure of GET-protected data in case of validation error with AdminRenderer.
AdminRendererEnforces DATA_UPLOAD_MAX_MEMORY_SIZE when parsing request.data.
DATA_UPLOAD_MAX_MEMORY_SIZErequest.dataDjango REST framework: Potential bypass of Django
MediumDATA_UPLOAD_MAX_MEMORY_SIZE when parsing oversized JSON and urlencoded request bodies via DRF request.dataDjango REST framework: AdminRenderer may disclose GET-protected data when rendering invalid write requests
MediumPlatform3
Adds support for Python 3.15.
Drops support for Python 3.9.
Adds support for Python 3.14.
Deprecations to plan for
Deprecated1
Expands deprecation classes and reviews the deprecation policy.
API changes
Generated by DepDelta from published Python source. Not mixed with prose notes.
- added:
variable DJANGO_DURATION_FORMAT
- added:
class RestFrameworkConfig(AppConfig) - added:
field RestFrameworkConfig.name - added:
field RestFrameworkConfig.verbose_name - added:
method RestFrameworkConfig.ready()
- removed:
class OAuth2Authentication(BaseAuthentication) - removed:
class OAuthAuthentication(BaseAuthentication) - removed:
constructor OAuth2Authentication(*args, **kwargs) - removed:
constructor OAuthAuthentication(*args, **kwargs) - removed:
field OAuth2Authentication.allow_query_params_token - removed:
field OAuth2Authentication.www_authenticate_realm - removed:
field OAuthAuthentication.www_authenticate_realm - removed:
method OAuth2Authentication.authenticate(request) - removed:
method OAuth2Authentication.authenticate_credentials(request, access_token) - removed:
method OAuth2Authentication.authenticate_header(request) - removed:
method OAuthAuthentication.authenticate(request) - removed:
method OAuthAuthentication.authenticate_header(request) - removed:
method OAuthAuthentication.check_nonce(request, oauth_request) - removed:
method OAuthAuthentication.validate_token(request, consumer, token) - changed:
class BaseAuthentication(object) → class BaseAuthentication - changed:
method BasicAuthentication.authenticate_credentials(userid, password) → method BasicAuthentication.authenticate_credentials(userid, password, request=…) - added:
class RemoteUserAuthentication(BaseAuthentication) - added:
field RemoteUserAuthentication.header - added:
field TokenAuthentication.keyword - added:
method RemoteUserAuthentication.authenticate(request) - added:
method TokenAuthentication.get_model()
- added:
class TokenChangeList(ChangeList) - added:
field TokenAdmin.actions - added:
field TokenAdmin.list_filter - added:
field TokenAdmin.search_fields - added:
field TokenAdmin.search_help_text - added:
method TokenAdmin.get_changelist(request, **kwargs) - added:
method TokenAdmin.get_object(request, object_id, from_field=…) - added:
method TokenChangeList.url_for_result(result) - added:
variable User
- added:
class AuthTokenConfig(AppConfig) - added:
field AuthTokenConfig.name - added:
field AuthTokenConfig.verbose_name
- added:
class Command(BaseCommand) - added:
field Command.help - added:
method Command.add_arguments(parser) - added:
method Command.create_user_token(username, reset_token) - added:
method Command.handle(*args, **options) - added:
variable UserModel
- removed:
variable AUTH_USER_MODEL - changed:
method Token.generate_key() → static method Token.generate_key() - added:
class TokenProxy(Token) - added:
class TokenProxy.Meta - added:
class TokenProxyQuerySet(models.QuerySet) - added:
field Token.Meta.verbose_name - added:
field Token.Meta.verbose_name_plural - added:
field TokenProxy.Meta.abstract - added:
field TokenProxy.Meta.proxy - added:
field TokenProxy.Meta.verbose_name - added:
field TokenProxy.Meta.verbose_name_plural - added:
field TokenProxy.objects - added:
method TokenProxy.delete(using=…, keep_parents=…) - added:
method TokenProxyQuerySet.delete() - added:
property TokenProxy.pk
- added:
field AuthTokenSerializer.token
- removed:
field ObtainAuthToken.model - changed:
method ObtainAuthToken.post(request) → method ObtainAuthToken.post(request, *args, **kwargs) - added:
method ObtainAuthToken.get_serializer(*args, **kwargs) - added:
method ObtainAuthToken.get_serializer_context()
- added:
function pagination_system_check(app_configs, **kwargs)
- removed:
class RequestFactory(DjangoRequestFactory) - removed:
class View(DjangoView) - removed:
function check_nonce(request, oauth_request, oauth_nonce, oauth_timestamp) - removed:
function get_concrete_model(model_cls) - removed:
function get_model_name(model_cls) - removed:
function is_non_str_iterable(obj) - removed:
function python_2_unicode_compatible(klass) - removed:
method RequestFactory.generic(method, path, data=…, content_type=…, **extra) - removed:
variable BytesIO - removed:
variable Image - removed:
variable StringIO - removed:
variable check_nonce - removed:
variable django_filters - removed:
variable etree - removed:
variable guardian - removed:
variable oauth - removed:
variable oauth2_constants - removed:
variable oauth2_provider - removed:
variable oauth2_provider_scope - removed:
variable oauth_provider - removed:
variable oauth_provider_store - removed:
variable provider_now - added:
class CodeBlockPreprocessor(Preprocessor) - added:
field CodeBlockPreprocessor.formatter - added:
field CodeBlockPreprocessor.pattern - added:
function md_filter_add_syntax_highlight(md) - added:
function pygments_css(style) - added:
function pygments_highlight(text, lang, style) - added:
function split_header_value(value, sep=…) - added:
function unicode_http_header(value) - added:
method CodeBlockPreprocessor.run(lines) - added:
variable HEADERID_EXT_PATH - added:
variable INDENT_SEPARATORS - added:
variable LEVEL_PARAM - added:
variable LONG_SEPARATORS - added:
variable SHORT_SEPARATORS - added:
variable inflection - added:
variable markdown - added:
variable postgres_fields - added:
variable pygments - added:
variable requests - added:
variable uritemplate
- removed:
function detail_route(methods=…, **kwargs) - removed:
function link(**kwargs) - removed:
function list_route(methods=…, **kwargs) - changed:
function action(methods=…, **kwargs) → function action(methods=…, detail=…, url_path=…, url_name=…, **kwargs) - changed:
function api_view(http_method_names) → function api_view(http_method_names=…) - added:
class MethodMapper(dict) - added:
constructor MethodMapper(action, methods) - added:
function content_negotiation_class(content_negotiation_class) - added:
function metadata_class(metadata_class) - added:
function schema(view_inspector) - added:
function throttle_scope(throttle_scope) - added:
function versioning_class(versioning_class) - added:
method MethodMapper.delete(func) - added:
method MethodMapper.get(func) - added:
method MethodMapper.head(func) - added:
method MethodMapper.options(func) - added:
method MethodMapper.patch(func) - added:
method MethodMapper.post(func) - added:
method MethodMapper.put(func) - added:
method MethodMapper.trace(func)
- added:
class RemovedInDRF319Warning(DeprecationWarning) - added:
class RemovedInDRF320Warning(PendingDeprecationWarning) - added:
variable RemovedAfterNextDRFVersionWarning - added:
variable RemovedInNextDRFVersionWarning
- removed:
field Throttled.extra_detail - changed:
constructor APIException(detail=…) → constructor APIException(detail=…, code=…) - changed:
constructor MethodNotAllowed(method, detail=…) → constructor MethodNotAllowed(method, detail=…, code=…) - changed:
constructor NotAcceptable(detail=…, available_renderers=…) → constructor NotAcceptable(detail=…, code=…, available_renderers=…) - changed:
constructor Throttled(wait=…, detail=…) → constructor Throttled(wait=…, detail=…, code=…) - changed:
constructor UnsupportedMediaType(media_type, detail=…) → constructor UnsupportedMediaType(media_type, detail=…, code=…) - added:
class ErrorDetail(str) - added:
class NotFound(APIException) - added:
class ValidationError(APIException) - added:
constructor ValidationError(detail=…, code=…) - added:
field APIException.default_code - added:
field AuthenticationFailed.default_code - added:
field ErrorDetail.code - added:
field MethodNotAllowed.default_code - added:
field NotAcceptable.default_code - added:
field NotAuthenticated.default_code - added:
field NotFound.default_code - added:
field NotFound.default_detail - added:
field NotFound.status_code - added:
field ParseError.default_code - added:
field PermissionDenied.default_code - added:
field Throttled.default_code - added:
field Throttled.extra_detail_plural - added:
field Throttled.extra_detail_singular - added:
field UnsupportedMediaType.default_code - added:
field ValidationError.default_code - added:
field ValidationError.default_detail - added:
field ValidationError.status_code - added:
function bad_request(request, exception, *args, **kwargs) - added:
function server_error(request, *args, **kwargs) - added:
method APIException.get_codes() - added:
method APIException.get_full_details()
- removed:
class WritableField(Field) - removed:
constructor WritableField(source=…, label=…, help_text=…, read_only=…, write_only=…, required=…, validators=…, error_messages=…, widget=…, default=…, blank=…) - removed:
field BooleanField.empty - removed:
field BooleanField.form_field_class - removed:
field BooleanField.type_label - removed:
field BooleanField.type_name - removed:
field BooleanField.widget - removed:
field CharField.form_field_class - removed:
field CharField.type_label - removed:
field CharField.type_name - removed:
field ChoiceField.form_field_class - removed:
field ChoiceField.type_label - removed:
field ChoiceField.type_name - removed:
field ChoiceField.widget - removed:
field DateField.empty - removed:
field DateField.form_field_class - removed:
field DateField.format - removed:
field DateField.input_formats - removed:
field DateField.type_label - removed:
field DateField.type_name - removed:
field DateField.widget - removed:
field DateTimeField.empty - removed:
field DateTimeField.form_field_class - removed:
field DateTimeField.format - removed:
field DateTimeField.input_formats - removed:
field DateTimeField.type_label - removed:
field DateTimeField.type_name - removed:
field DateTimeField.widget - removed:
field DecimalField.empty - removed:
field DecimalField.form_field_class - removed:
field DecimalField.type_label - removed:
field DecimalField.type_name - removed:
field EmailField.default_validators - removed:
field EmailField.form_field_class - removed:
field EmailField.type_label - removed:
field EmailField.type_name - removed:
field Field.creation_counter - removed:
field Field.empty - removed:
field Field.form_field_class - removed:
field Field.partial - removed:
field Field.read_only - removed:
field Field.type_label - removed:
field Field.type_name - removed:
field Field.use_files - removed:
field Field.widget - removed:
field FileField.form_field_class - removed:
field FileField.type_label - removed:
field FileField.type_name - removed:
field FileField.use_files - removed:
field FileField.widget - removed:
field FloatField.empty - removed:
field FloatField.form_field_class - removed:
field FloatField.type_label - removed:
field FloatField.type_name - removed:
field ImageField.form_field_class - removed:
field ImageField.type_label - removed:
field ImageField.type_name - removed:
field ImageField.use_files - removed:
field IntegerField.empty - removed:
field IntegerField.form_field_class - removed:
field IntegerField.type_label - removed:
field IntegerField.type_name - removed:
field RegexField.form_field_class - removed:
field RegexField.regex - removed:
field RegexField.type_label - removed:
field RegexField.type_name - removed:
field SlugField.default_validators - removed:
field SlugField.form_field_class - removed:
field SlugField.type_label - removed:
field SlugField.type_name - removed:
field TimeField.empty - removed:
field TimeField.form_field_class - removed:
field TimeField.format - removed:
field TimeField.input_formats - removed:
field TimeField.type_label - removed:
field TimeField.type_name - removed:
field TimeField.widget - removed:
field URLField.type_label - removed:
field URLField.type_name - removed:
field WritableField.default - removed:
field WritableField.default_error_messages - removed:
field WritableField.default_validators - removed:
field WritableField.widget - removed:
field WritableField.write_only - removed:
function get_component(obj, attr_name) - removed:
function humanize_strptime(format_string) - removed:
function readable_date_formats(formats) - removed:
function readable_datetime_formats(formats) - removed:
function readable_time_formats(formats) - removed:
function strip_multiple_choice_msg(help_text) - removed:
method BooleanField.field_from_native(data, files, field_name, into) - removed:
method BooleanField.from_native(value) - removed:
method CharField.from_native(value) - removed:
method ChoiceField.from_native(value) - removed:
method ChoiceField.metadata() - removed:
method ChoiceField.valid_value(value) - removed:
method ChoiceField.validate(value) - removed:
method DateField.from_native(value) - removed:
method DateField.to_native(value) - removed:
method DateTimeField.from_native(value) - removed:
method DateTimeField.to_native(value) - removed:
method DecimalField.from_native(value) - removed:
method DecimalField.validate(value) - removed:
method EmailField.from_native(value) - removed:
method Field.attributes() - removed:
method Field.field_from_native(data, files, field_name, into) - removed:
method Field.field_to_native(obj, field_name) - removed:
method Field.initialize(parent, field_name) - removed:
method Field.label_tag() - removed:
method Field.metadata() - removed:
method Field.to_native(value) - removed:
method Field.widget_html() - removed:
method FileField.from_native(data) - removed:
method FileField.to_native(value) - removed:
method FloatField.from_native(value) - removed:
method ImageField.from_native(data) - removed:
method IntegerField.from_native(value) - removed:
method ModelField.attributes() - removed:
method ModelField.field_to_native(obj, field_name) - removed:
method ModelField.from_native(value) - removed:
method SerializerMethodField.field_to_native(obj, field_name) - removed:
method TimeField.from_native(value) - removed:
method TimeField.to_native(value) - removed:
method WritableField.field_from_native(data, files, field_name, into) - removed:
method WritableField.field_to_native(obj, field_name) - removed:
method WritableField.from_native(value) - removed:
method WritableField.get_default_value() - removed:
method WritableField.run_validators(value) - removed:
method WritableField.validate(value) - removed:
property Field.errors - changed:
class BooleanField(WritableField) → class BooleanField(Field) - changed:
class CharField(WritableField) → class CharField(Field) - changed:
class ChoiceField(WritableField) → class ChoiceField(Field) - changed:
class DateField(WritableField) → class DateField(Field) - changed:
class DateTimeField(WritableField) → class DateTimeField(Field) - changed:
class DecimalField(WritableField) → class DecimalField(Field) - changed:
class Field(object) → class Field - changed:
class FileField(WritableField) → class FileField(Field) - changed:
class FloatField(WritableField) → class FloatField(Field) - changed:
class IntegerField(WritableField) → class IntegerField(Field) - changed:
class ModelField(WritableField) → class ModelField(Field) - changed:
class TimeField(WritableField) → class TimeField(Field) - changed:
constructor CharField(max_length=…, min_length=…, allow_none=…, *args, **kwargs) → constructor CharField(**kwargs) - changed:
constructor ChoiceField(choices=…, blank_display_value=…, *args, **kwargs) → constructor ChoiceField(choices, **kwargs) - changed:
constructor DateField(input_formats=…, format=…, *args, **kwargs) → constructor DateField(format=…, input_formats=…, **kwargs) - changed:
constructor DateTimeField(input_formats=…, format=…, *args, **kwargs) → constructor DateTimeField(format=…, input_formats=…, default_timezone=…, **kwargs) - changed:
constructor DecimalField(max_value=…, min_value=…, max_digits=…, decimal_places=…, *args, **kwargs) → constructor DecimalField(max_digits, decimal_places, coerce_to_string=…, max_value=…, min_value=…, localize=…, rounding=…, normalize_output=…, **kwargs) - changed:
constructor Field(source=…, label=…, help_text=…) → constructor Field(*, read_only=…, write_only=…, required=…, default=…, initial=…, source=…, label=…, help_text=…, style=…, error_messages=…, validators=…, allow_null=…) - changed:
constructor FileField(*args, **kwargs) → constructor FileField(**kwargs) - changed:
constructor IntegerField(max_value=…, min_value=…, *args, **kwargs) → constructor IntegerField(**kwargs) - changed:
constructor ModelField(*args, **kwargs) → constructor ModelField(model_field, **kwargs) - changed:
constructor RegexField(regex, max_length=…, min_length=…, *args, **kwargs) → constructor RegexField(regex, **kwargs) - changed:
constructor SerializerMethodField(method_name, *args, **kwargs) → constructor SerializerMethodField(method_name=…, **kwargs) - changed:
constructor SlugField(*args, **kwargs) → constructor SlugField(allow_unicode=…, **kwargs) - changed:
constructor TimeField(input_formats=…, format=…, *args, **kwargs) → constructor TimeField(format=…, input_formats=…, **kwargs) - added:
class BigIntegerField(IntegerField) - added:
class BuiltinSignatureError(Exception) - added:
class CreateOnlyDefault - added:
class CurrentUserDefault - added:
class DictField(Field) - added:
class DurationField(Field) - added:
class FilePathField(ChoiceField) - added:
class HStoreField(DictField) - added:
class HiddenField(Field) - added:
class IPAddressField(CharField) - added:
class JSONField(Field) - added:
class ListField(Field) - added:
class MultipleChoiceField(ChoiceField) - added:
class ReadOnlyField(Field) - added:
class SkipField(Exception) - added:
class UUIDField(Field) - added:
class empty - added:
constructor BigIntegerField(coerce_to_string=…, **kwargs) - added:
constructor BooleanField(**kwargs) - added:
constructor CreateOnlyDefault(default) - added:
constructor DictField(**kwargs) - added:
constructor DurationField(*, format=…, **kwargs) - added:
constructor EmailField(**kwargs) - added:
constructor FilePathField(path, match=…, recursive=…, allow_files=…, allow_folders=…, required=…, **kwargs) - added:
constructor FloatField(**kwargs) - added:
constructor HStoreField(**kwargs) - added:
constructor HiddenField(**kwargs) - added:
constructor IPAddressField(protocol=…, **kwargs) - added:
constructor ImageField(**kwargs) - added:
constructor JSONField(**kwargs) - added:
constructor ListField(**kwargs) - added:
constructor MultipleChoiceField(**kwargs) - added:
constructor ReadOnlyField(**kwargs) - added:
constructor UUIDField(**kwargs) - added:
field BigIntegerField.default_error_messages - added:
field BooleanField.FALSE_VALUES - added:
field BooleanField.NULL_VALUES - added:
field BooleanField.TRUE_VALUES - added:
field BooleanField.default_empty_html - added:
field BooleanField.initial - added:
field CharField.default_error_messages - added:
field CharField.initial - added:
field ChoiceField.html_cutoff - added:
field ChoiceField.html_cutoff_text - added:
field CreateOnlyDefault.requires_context - added:
field CurrentUserDefault.requires_context - added:
field DateField.datetime_parser - added:
field DateTimeField.datetime_parser - added:
field DecimalField.MAX_STRING_LENGTH - added:
field DictField.child - added:
field DictField.default_error_messages - added:
field DictField.initial - added:
field DurationField.default_error_messages - added:
field Field.default_empty_html - added:
field Field.default_error_messages - added:
field Field.default_validators - added:
field Field.initial - added:
field FilePathField.default_error_messages - added:
field FloatField.MAX_STRING_LENGTH - added:
field HStoreField.child - added:
field IPAddressField.default_error_messages - added:
field IntegerField.MAX_STRING_LENGTH - added:
field IntegerField.re_decimal - added:
field JSONField.default_error_messages - added:
field ListField.child - added:
field ListField.default_error_messages - added:
field ListField.initial - added:
field ModelField.default_error_messages - added:
field MultipleChoiceField.default_empty_html - added:
field MultipleChoiceField.default_error_messages - added:
field RegexField.default_error_messages - added:
field TimeField.datetime_parser - added:
field URLField.default_error_messages - added:
field UUIDField.default_error_messages - added:
field UUIDField.valid_formats - added:
function flatten_choices_dict(choices) - added:
function get_attribute(instance, attrs) - added:
function get_error_detail(exc_info) - added:
function iter_options(grouped_choices, cutoff=…, cutoff_text=…) - added:
function to_choices_dict(choices) - added:
method BigIntegerField.to_representation(value) - added:
method BooleanField.to_internal_value(data) - added:
method BooleanField.to_representation(value) - added:
method CharField.run_validation(data=…) - added:
method CharField.to_internal_value(data) - added:
method CharField.to_representation(value) - added:
method ChoiceField.iter_options() - added:
method ChoiceField.to_internal_value(data) - added:
method ChoiceField.to_representation(value) - added:
method DateField.to_internal_value(value) - added:
method DateField.to_representation(value) - added:
method DateTimeField.default_timezone() - added:
method DateTimeField.enforce_timezone(value) - added:
method DateTimeField.to_internal_value(value) - added:
method DateTimeField.to_representation(value) - added:
method DecimalField.quantize(value) - added:
method DecimalField.to_internal_value(data) - added:
method DecimalField.to_representation(value) - added:
method DecimalField.validate_empty_values(data) - added:
method DecimalField.validate_precision(value) - added:
method DictField.get_value(dictionary) - added:
method DictField.run_child_validation(data) - added:
method DictField.to_internal_value(data) - added:
method DictField.to_representation(value) - added:
method DurationField.to_internal_value(value) - added:
method DurationField.to_representation(value) - added:
method Field.bind(field_name, parent) - added:
method Field.fail(key, **kwargs) - added:
method Field.get_attribute(instance) - added:
method Field.get_default() - added:
method Field.get_initial() - added:
method Field.get_validators() - added:
method Field.get_value(dictionary) - added:
method Field.run_validation(data=…) - added:
method Field.run_validators(value) - added:
method Field.to_internal_value(data) - added:
method Field.to_representation(value) - added:
method Field.validate_empty_values(data) - added:
method FileField.to_internal_value(data) - added:
method FileField.to_representation(value) - added:
method FloatField.to_internal_value(data) - added:
method FloatField.to_representation(value) - added:
method HiddenField.get_value(dictionary) - added:
method HiddenField.to_internal_value(data) - added:
method IPAddressField.to_internal_value(data) - added:
method ImageField.to_internal_value(data) - added:
method IntegerField.to_internal_value(data) - added:
method IntegerField.to_representation(value) - added:
method JSONField.get_value(dictionary) - added:
method JSONField.to_internal_value(data) - added:
method JSONField.to_representation(value) - added:
method ListField.get_value(dictionary) - added:
method ListField.run_child_validation(data) - added:
method ListField.to_internal_value(data) - added:
method ListField.to_representation(data) - added:
method ModelField.get_attribute(obj) - added:
method ModelField.to_internal_value(data) - added:
method ModelField.to_representation(obj) - added:
method MultipleChoiceField.get_value(dictionary) - added:
method MultipleChoiceField.to_internal_value(data) - added:
method MultipleChoiceField.to_representation(value) - added:
method ReadOnlyField.to_representation(value) - added:
method SerializerMethodField.bind(field_name, parent) - added:
method SerializerMethodField.to_representation(value) - added:
method TimeField.to_internal_value(value) - added:
method TimeField.to_representation(value) - added:
method UUIDField.to_internal_value(data) - added:
method UUIDField.to_representation(value) - added:
property Field.context - added:
property Field.root - added:
property Field.validators - added:
variable MISSING_ERROR_MESSAGE - added:
variable NOT_READ_ONLY_REQUIRED - added:
variable NOT_READ_ONLY_WRITE_ONLY - added:
variable NOT_REQUIRED_DEFAULT - added:
variable REGEX_TYPE - added:
variable USE_READONLYFIELD
- removed:
class DjangoFilterBackend(BaseFilterBackend) - removed:
class DjangoObjectPermissionsFilter(BaseFilterBackend) - removed:
constructor DjangoFilterBackend() - removed:
constructor DjangoObjectPermissionsFilter() - removed:
field DjangoFilterBackend.default_filter_set - removed:
field DjangoObjectPermissionsFilter.perm_format - removed:
method DjangoFilterBackend.filter_queryset(request, queryset, view) - removed:
method DjangoFilterBackend.get_filter_class(view, queryset=…) - removed:
method DjangoObjectPermissionsFilter.filter_queryset(request, queryset, view) - removed:
variable FilterSet - changed:
class BaseFilterBackend(object) → class BaseFilterBackend - changed:
method OrderingFilter.get_ordering(request) → method OrderingFilter.get_ordering(request, queryset, view) - changed:
method OrderingFilter.remove_invalid_fields(queryset, ordering, view) → method OrderingFilter.remove_invalid_fields(queryset, fields, view, request) - changed:
method SearchFilter.construct_search(field_name) → method SearchFilter.construct_search(field_name, queryset) - added:
class UnaccentedSearchFilter(SearchFilter) - added:
field OrderingFilter.ordering_description - added:
field OrderingFilter.ordering_title - added:
field OrderingFilter.template - added:
field SearchFilter.default_lookup - added:
field SearchFilter.lookup_prefixes - added:
field SearchFilter.search_description - added:
field SearchFilter.search_title - added:
field SearchFilter.template - added:
field UnaccentedSearchFilter.default_lookup - added:
field UnaccentedSearchFilter.lookup_prefixes - added:
function search_smart_split(search_terms) - added:
method BaseFilterBackend.get_schema_operation_parameters(view) - added:
method OrderingFilter.get_default_valid_fields(queryset, view, context=…) - added:
method OrderingFilter.get_schema_operation_parameters(view) - added:
method OrderingFilter.get_template_context(request, queryset, view) - added:
method OrderingFilter.get_valid_fields(queryset, view, context=…) - added:
method OrderingFilter.to_html(request, queryset, view) - added:
method SearchFilter.get_schema_operation_parameters(view) - added:
method SearchFilter.get_search_fields(view, request) - added:
method SearchFilter.must_call_distinct(queryset, search_fields) - added:
method SearchFilter.to_html(request, queryset, view)
- removed:
class MultipleObjectAPIView(GenericAPIView) - removed:
class SingleObjectAPIView(GenericAPIView) - removed:
constructor MultipleObjectAPIView(*args, **kwargs) - removed:
constructor SingleObjectAPIView(*args, **kwargs) - removed:
field GenericAPIView.allow_empty - removed:
field GenericAPIView.filter_backend - removed:
field GenericAPIView.max_paginate_by - removed:
field GenericAPIView.model - removed:
field GenericAPIView.model_serializer_class - removed:
field GenericAPIView.page_kwarg - removed:
field GenericAPIView.paginate_by - removed:
field GenericAPIView.paginate_by_param - removed:
field GenericAPIView.pagination_serializer_class - removed:
field GenericAPIView.paginator_class - removed:
field GenericAPIView.pk_url_kwarg - removed:
field GenericAPIView.slug_field - removed:
field GenericAPIView.slug_url_kwarg - removed:
function strict_positive_int(integer_string, cutoff=…) - removed:
method GenericAPIView.get_filter_backends() - removed:
method GenericAPIView.get_paginate_by(queryset=…) - removed:
method GenericAPIView.get_pagination_serializer(page) - removed:
method GenericAPIView.metadata(request) - removed:
method GenericAPIView.post_delete(obj) - removed:
method GenericAPIView.post_save(obj, created=…) - removed:
method GenericAPIView.pre_delete(obj) - removed:
method GenericAPIView.pre_save(obj) - changed:
method GenericAPIView.get_object(queryset=…) → method GenericAPIView.get_object() - changed:
method GenericAPIView.get_serializer(instance=…, data=…, files=…, many=…, partial=…, allow_add_remove=…) → method GenericAPIView.get_serializer(*args, **kwargs) - changed:
method GenericAPIView.paginate_queryset(queryset, page_size=…) → method GenericAPIView.paginate_queryset(queryset) - added:
field GenericAPIView.pagination_class - added:
method GenericAPIView.get_paginated_response(data) - added:
property GenericAPIView.paginator
- added:
class Command(BaseCommand) - added:
field Command.help - added:
method Command.add_arguments(parser) - added:
method Command.get_renderer(format) - added:
method Command.handle(*args, **options)
- added:
class BaseMetadata - added:
class SimpleMetadata(BaseMetadata) - added:
field SimpleMetadata.label_lookup - added:
method BaseMetadata.determine_metadata(request, view) - added:
method SimpleMetadata.determine_actions(request, view) - added:
method SimpleMetadata.determine_metadata(request, view) - added:
method SimpleMetadata.get_field_info(field) - added:
method SimpleMetadata.get_serializer_info(serializer)
- removed:
field ListModelMixin.empty_error - removed:
method UpdateModelMixin.get_object_or_none() - removed:
method UpdateModelMixin.pre_save(obj) - changed:
class CreateModelMixin(object) → class CreateModelMixin - changed:
class DestroyModelMixin(object) → class DestroyModelMixin - changed:
class ListModelMixin(object) → class ListModelMixin - changed:
class RetrieveModelMixin(object) → class RetrieveModelMixin - changed:
class UpdateModelMixin(object) → class UpdateModelMixin - added:
method CreateModelMixin.perform_create(serializer) - added:
method DestroyModelMixin.perform_destroy(instance) - added:
method UpdateModelMixin.perform_update(serializer)
- changed:
class BaseContentNegotiation(object) → class BaseContentNegotiation - added:
field DefaultContentNegotiation.max_accept_header_length - added:
field DefaultContentNegotiation.max_accept_tokens - added:
field DefaultContentNegotiation.max_media_type_length
- removed:
class BasePaginationSerializer(serializers.Serializer) - removed:
class DefaultObjectSerializer(serializers.Field) - removed:
class NextPageField(serializers.Field) - removed:
class PaginationSerializer(BasePaginationSerializer) - removed:
class PaginationSerializerOptions(serializers.SerializerOptions) - removed:
class PreviousPageField(serializers.Field) - removed:
constructor BasePaginationSerializer(*args, **kwargs) - removed:
constructor DefaultObjectSerializer(source=…, many=…, context=…) - removed:
constructor PaginationSerializerOptions(meta) - removed:
field BasePaginationSerializer.results_field - removed:
field NextPageField.page_field - removed:
field PaginationSerializer.count - removed:
field PaginationSerializer.next - removed:
field PaginationSerializer.previous - removed:
field PreviousPageField.page_field - removed:
method NextPageField.to_native(value) - removed:
method PreviousPageField.to_native(value) - added:
class BasePagination - added:
class CursorPagination(BasePagination) - added:
class LimitOffsetPagination(BasePagination) - added:
class PageNumberPagination(BasePagination) - added:
field BasePagination.display_page_controls - added:
field CursorPagination.cursor_query_description - added:
field CursorPagination.cursor_query_param - added:
field CursorPagination.invalid_cursor_message - added:
field CursorPagination.max_page_size - added:
field CursorPagination.offset_cutoff - added:
field CursorPagination.ordering - added:
field CursorPagination.page_size - added:
field CursorPagination.page_size_query_description - added:
field CursorPagination.page_size_query_param - added:
field CursorPagination.template - added:
field LimitOffsetPagination.default_limit - added:
field LimitOffsetPagination.limit_query_description - added:
field LimitOffsetPagination.limit_query_param - added:
field LimitOffsetPagination.max_limit - added:
field LimitOffsetPagination.offset_query_description - added:
field LimitOffsetPagination.offset_query_param - added:
field LimitOffsetPagination.template - added:
field PageNumberPagination.django_paginator_class - added:
field PageNumberPagination.invalid_page_message - added:
field PageNumberPagination.last_page_strings - added:
field PageNumberPagination.max_page_size - added:
field PageNumberPagination.page_query_description - added:
field PageNumberPagination.page_query_param - added:
field PageNumberPagination.page_size - added:
field PageNumberPagination.page_size_query_description - added:
field PageNumberPagination.page_size_query_param - added:
field PageNumberPagination.template - added:
method BasePagination.get_paginated_response(data) - added:
method BasePagination.get_paginated_response_schema(schema) - added:
method BasePagination.get_results(data) - added:
method BasePagination.get_schema_operation_parameters(view) - added:
method BasePagination.paginate_queryset(queryset, request, view=…) - added:
method BasePagination.to_html() - added:
method CursorPagination.decode_cursor(request) - added:
method CursorPagination.encode_cursor(cursor) - added:
method CursorPagination.get_html_context() - added:
method CursorPagination.get_next_link() - added:
method CursorPagination.get_ordering(request, queryset, view) - added:
method CursorPagination.get_page_size(request) - added:
method CursorPagination.get_paginated_response(data) - added:
method CursorPagination.get_paginated_response_schema(schema) - added:
method CursorPagination.get_previous_link() - added:
method CursorPagination.get_schema_operation_parameters(view) - added:
method CursorPagination.paginate_queryset(queryset, request, view=…) - added:
method CursorPagination.to_html() - added:
method LimitOffsetPagination.get_count(queryset) - added:
method LimitOffsetPagination.get_html_context() - added:
method LimitOffsetPagination.get_limit(request) - added:
method LimitOffsetPagination.get_next_link() - added:
method LimitOffsetPagination.get_offset(request) - added:
method LimitOffsetPagination.get_paginated_response(data) - added:
method LimitOffsetPagination.get_paginated_response_schema(schema) - added:
method LimitOffsetPagination.get_previous_link() - added:
method LimitOffsetPagination.get_schema_operation_parameters(view) - added:
method LimitOffsetPagination.paginate_queryset(queryset, request, view=…) - added:
method LimitOffsetPagination.to_html() - added:
method PageNumberPagination.get_html_context() - added:
method PageNumberPagination.get_next_link() - added:
method PageNumberPagination.get_page_number(request, paginator) - added:
method PageNumberPagination.get_page_size(request) - added:
method PageNumberPagination.get_paginated_response(data) - added:
method PageNumberPagination.get_paginated_response_schema(schema) - added:
method PageNumberPagination.get_previous_link() - added:
method PageNumberPagination.get_schema_operation_parameters(view) - added:
method PageNumberPagination.paginate_queryset(queryset, request, view=…) - added:
method PageNumberPagination.to_html() - added:
variable Cursor - added:
variable PAGE_BREAK - added:
variable PageLink
- removed:
class XMLParser(BaseParser) - removed:
class YAMLParser(BaseParser) - removed:
field XMLParser.media_type - removed:
field YAMLParser.media_type - removed:
method FileUploadParser.get_encoded_filename(filename_parm) - removed:
method XMLParser.parse(stream, media_type=…, parser_context=…) - removed:
method YAMLParser.parse(stream, media_type=…, parser_context=…) - changed:
class BaseParser(object) → class BaseParser - changed:
class DataAndFiles(object) → class DataAndFiles - added:
field FileUploadParser.errors - added:
field JSONParser.strict - added:
function get_encoding(parser_context)
- removed:
class TokenHasReadWriteScope(BasePermission) - removed:
method TokenHasReadWriteScope.has_permission(request, view) - changed:
class BasePermission(object) → class BasePermission - added:
class AND - added:
class BasePermissionMetaclass(OperationHolderMixin, type) - added:
class NOT - added:
class OR - added:
class OperandHolder(OperationHolderMixin) - added:
class OperationHolderMixin - added:
class SingleOperandHolder(OperationHolderMixin) - added:
constructor AND(op1, op2) - added:
constructor NOT(op1) - added:
constructor OR(op1, op2) - added:
constructor OperandHolder(operator_class, op1_class, op2_class) - added:
constructor SingleOperandHolder(operator_class, op1_class) - added:
method AND.has_object_permission(request, view, obj) - added:
method AND.has_permission(request, view) - added:
method NOT.has_object_permission(request, view, obj) - added:
method NOT.has_permission(request, view) - added:
method OR.has_object_permission(request, view, obj) - added:
method OR.has_permission(request, view)
- removed:
field HyperlinkedIdentityField.lookup_field - removed:
field HyperlinkedIdentityField.pk_url_kwarg - removed:
field HyperlinkedIdentityField.read_only - removed:
field HyperlinkedIdentityField.slug_field - removed:
field HyperlinkedIdentityField.slug_url_kwarg - removed:
field HyperlinkedRelatedField.pk_url_kwarg - removed:
field HyperlinkedRelatedField.read_only - removed:
field HyperlinkedRelatedField.slug_field - removed:
field HyperlinkedRelatedField.slug_url_kwarg - removed:
field PrimaryKeyRelatedField.read_only - removed:
field RelatedField.cache_choices - removed:
field RelatedField.choices - removed:
field RelatedField.empty_label - removed:
field RelatedField.form_field_class - removed:
field RelatedField.many - removed:
field RelatedField.many_form_field_class - removed:
field RelatedField.many_widget - removed:
field RelatedField.null_values - removed:
field RelatedField.read_only - removed:
field RelatedField.widget - removed:
field SlugRelatedField.read_only - removed:
method HyperlinkedIdentityField.field_to_native(obj, field_name) - removed:
method HyperlinkedIdentityField.get_url(obj, view_name, request, format) - removed:
method HyperlinkedRelatedField.from_native(value) - removed:
method HyperlinkedRelatedField.to_native(obj) - removed:
method PrimaryKeyRelatedField.field_to_native(obj, field_name) - removed:
method PrimaryKeyRelatedField.from_native(data) - removed:
method PrimaryKeyRelatedField.label_from_instance(obj) - removed:
method PrimaryKeyRelatedField.prepare_value(obj) - removed:
method PrimaryKeyRelatedField.to_native(pk) - removed:
method RelatedField.field_from_native(data, files, field_name, into) - removed:
method RelatedField.field_to_native(obj, field_name) - removed:
method RelatedField.get_default_value() - removed:
method RelatedField.initialize(parent, field_name) - removed:
method RelatedField.label_from_instance(obj) - removed:
method RelatedField.prepare_value(obj) - removed:
method SlugRelatedField.from_native(data) - removed:
method SlugRelatedField.to_native(obj) - changed:
class HyperlinkedIdentityField(Field) → class HyperlinkedIdentityField(HyperlinkedRelatedField) - changed:
class RelatedField(WritableField) → class RelatedField(Field) - changed:
constructor HyperlinkedIdentityField(*args, **kwargs) → constructor HyperlinkedIdentityField(view_name=…, **kwargs) - changed:
constructor HyperlinkedRelatedField(*args, **kwargs) → constructor HyperlinkedRelatedField(view_name=…, **kwargs) - changed:
constructor RelatedField(*args, **kwargs) → constructor RelatedField(**kwargs) - changed:
constructor SlugRelatedField(*args, **kwargs) → constructor SlugRelatedField(slug_field=…, **kwargs) - changed:
method HyperlinkedRelatedField.get_object(queryset, view_name, view_args, view_kwargs) → method HyperlinkedRelatedField.get_object(view_name, view_args, view_kwargs) - added:
class Hyperlink(str) - added:
class ManyRelatedField(Field) - added:
class ObjectTypeError(TypeError) - added:
class ObjectValueError(ValueError) - added:
class PKOnlyObject - added:
class StringRelatedField(RelatedField) - added:
constructor ManyRelatedField(child_relation=…, *args, **kwargs) - added:
constructor PKOnlyObject(pk) - added:
constructor PrimaryKeyRelatedField(**kwargs) - added:
constructor StringRelatedField(**kwargs) - added:
field Hyperlink.is_hyperlink - added:
field HyperlinkedRelatedField.view_name - added:
field ManyRelatedField.default_empty_html - added:
field ManyRelatedField.default_error_messages - added:
field ManyRelatedField.html_cutoff - added:
field ManyRelatedField.html_cutoff_text - added:
field ManyRelatedField.initial - added:
field RelatedField.html_cutoff - added:
field RelatedField.html_cutoff_text - added:
function method_overridden(method_name, klass, instance) - added:
method HyperlinkedIdentityField.use_pk_only_optimization() - added:
method HyperlinkedRelatedField.to_internal_value(data) - added:
method HyperlinkedRelatedField.to_representation(value) - added:
method HyperlinkedRelatedField.use_pk_only_optimization() - added:
method ManyRelatedField.get_attribute(instance) - added:
method ManyRelatedField.get_choices(cutoff=…) - added:
method ManyRelatedField.get_value(dictionary) - added:
method ManyRelatedField.iter_options() - added:
method ManyRelatedField.to_internal_value(data) - added:
method ManyRelatedField.to_representation(iterable) - added:
method PrimaryKeyRelatedField.to_internal_value(data) - added:
method PrimaryKeyRelatedField.to_representation(value) - added:
method PrimaryKeyRelatedField.use_pk_only_optimization() - added:
method RelatedField.display_value(instance) - added:
method RelatedField.get_attribute(instance) - added:
method RelatedField.get_choices(cutoff=…) - added:
method RelatedField.get_queryset() - added:
method RelatedField.iter_options() - added:
method RelatedField.run_validation(data=…) - added:
method RelatedField.use_pk_only_optimization() - added:
method SlugRelatedField.to_internal_value(data) - added:
method SlugRelatedField.to_representation(obj) - added:
method StringRelatedField.to_representation(value) - added:
property Hyperlink.name - added:
property ManyRelatedField.choices - added:
property ManyRelatedField.grouped_choices - added:
property RelatedField.choices - added:
property RelatedField.grouped_choices - added:
static method RelatedField.many_init(*args, **kwargs) - added:
variable MANY_RELATION_KWARGS
- removed:
class JSONPRenderer(JSONRenderer) - removed:
class UnicodeJSONRenderer(JSONRenderer) - removed:
class UnicodeYAMLRenderer(YAMLRenderer) - removed:
class XMLRenderer(BaseRenderer) - removed:
class YAMLRenderer(BaseRenderer) - removed:
field HTMLFormRenderer.template - removed:
field JSONPRenderer.callback_parameter - removed:
field JSONPRenderer.charset - removed:
field JSONPRenderer.default_callback - removed:
field JSONPRenderer.format - removed:
field JSONPRenderer.media_type - removed:
field UnicodeJSONRenderer.ensure_ascii - removed:
field UnicodeYAMLRenderer.ensure_ascii - removed:
field XMLRenderer.charset - removed:
field XMLRenderer.format - removed:
field XMLRenderer.media_type - removed:
field YAMLRenderer.charset - removed:
field YAMLRenderer.encoder - removed:
field YAMLRenderer.ensure_ascii - removed:
field YAMLRenderer.format - removed:
field YAMLRenderer.media_type - removed:
method JSONPRenderer.get_callback(renderer_context) - removed:
method JSONPRenderer.render(data, accepted_media_type=…, renderer_context=…) - removed:
method TemplateHTMLRenderer.resolve_context(data, request, response) - removed:
method XMLRenderer.render(data, accepted_media_type=…, renderer_context=…) - removed:
method YAMLRenderer.render(data, accepted_media_type=…, renderer_context=…) - changed:
class BaseRenderer(object) → class BaseRenderer - changed:
method BrowsableAPIRenderer.get_description(view) → method BrowsableAPIRenderer.get_description(view, status_code) - changed:
method BrowsableAPIRenderer.get_raw_data_form(view, method, request) → method BrowsableAPIRenderer.get_raw_data_form(data, view, method, request) - changed:
method BrowsableAPIRenderer.get_rendered_html_form(view, method, request) → method BrowsableAPIRenderer.get_rendered_html_form(data, view, method, request) - added:
class AdminRenderer(BrowsableAPIRenderer) - added:
class JSONOpenAPIRenderer(BaseRenderer) - added:
class OpenAPIRenderer(BaseRenderer) - added:
constructor OpenAPIRenderer() - added:
field AdminRenderer.format - added:
field AdminRenderer.template - added:
field BrowsableAPIRenderer.code_style - added:
field BrowsableAPIRenderer.filter_template - added:
field HTMLFormRenderer.base_template - added:
field HTMLFormRenderer.default_style - added:
field HTMLFormRenderer.template_pack - added:
field JSONOpenAPIRenderer.charset - added:
field JSONOpenAPIRenderer.encoder_class - added:
field JSONOpenAPIRenderer.ensure_ascii - added:
field JSONOpenAPIRenderer.format - added:
field JSONOpenAPIRenderer.media_type - added:
field JSONRenderer.compact - added:
field JSONRenderer.strict - added:
field OpenAPIRenderer.charset - added:
field OpenAPIRenderer.format - added:
field OpenAPIRenderer.media_type - added:
function zero_as_none(value) - added:
method AdminRenderer.get_context(data, accepted_media_type, renderer_context) - added:
method AdminRenderer.get_result_url(result, view) - added:
method AdminRenderer.render(data, accepted_media_type=…, renderer_context=…) - added:
method BrowsableAPIRenderer.get_extra_actions(view, status_code) - added:
method BrowsableAPIRenderer.get_filter_form(data, view, request) - added:
method BrowsableAPIRenderer.render_form_for_serializer(serializer) - added:
method HTMLFormRenderer.render_field(field, parent_style) - added:
method JSONOpenAPIRenderer.render(data, media_type=…, renderer_context=…) - added:
method OpenAPIRenderer.render(data, media_type=…, renderer_context=…) - added:
method TemplateHTMLRenderer.get_template_context(data, renderer_context)
- removed:
property Request.DATA - removed:
property Request.QUERY_PARAMS - removed:
property Request.method - changed:
class Empty(object) → class Empty - changed:
class ForcedAuthentication(object) → class ForcedAuthentication - changed:
class Request(object) → class Request - changed:
class override_method(object) → class override_method - added:
class WrappedAttributeError(Exception) - added:
function wrap_attributeerrors() - added:
method Request.force_plaintext_errors(value) - added:
property Request.POST - added:
property Request.data - added:
property Request.query_params - added:
variable MAX_MEDIA_TYPE_LENGTH
- removed:
field Response.rendering_attrs
- added:
function preserve_builtin_query_params(url, request=…)
- removed:
function replace_methodname(format_string, methodname) - removed:
method BaseRouter.get_default_base_name(viewset) - removed:
method SimpleRouter.get_default_base_name(viewset) - removed:
variable DynamicDetailRoute - removed:
variable DynamicListRoute - changed:
class BaseRouter(object) → class BaseRouter - changed:
constructor SimpleRouter(trailing_slash=…) → constructor SimpleRouter(trailing_slash=…, use_regex_path=…) - changed:
method BaseRouter.register(prefix, viewset, base_name=…) → method BaseRouter.register(prefix, viewset, basename=…) - changed:
method DefaultRouter.get_api_root_view() → method DefaultRouter.get_api_root_view(api_urls=…) - added:
class APIRootView(views.APIView) - added:
constructor DefaultRouter(*args, **kwargs) - added:
field APIRootView.api_root_dict - added:
field APIRootView.schema - added:
field DefaultRouter.APIRootView - added:
field DefaultRouter.APISchemaView - added:
field DefaultRouter.SchemaGenerator - added:
field DefaultRouter.default_schema_renderers - added:
function escape_curly_brackets(url_path) - added:
method APIRootView.get(request, *args, **kwargs) - added:
method BaseRouter.get_default_basename(viewset) - added:
method BaseRouter.is_already_registered(new_basename) - added:
method SimpleRouter.get_default_basename(viewset) - added:
variable DynamicRoute
- added:
export AutoSchema - added:
export DefaultSchema - added:
export SchemaGenerator - added:
export api_settings - added:
export openapi - added:
function get_schema_view(title=…, url=…, description=…, urlconf=…, renderer_classes=…, public=…, patterns=…, generator_class=…, authentication_classes=…, permission_classes=…, version=…)
- added:
class BaseSchemaGenerator - added:
class EndpointEnumerator - added:
constructor BaseSchemaGenerator(title=…, url=…, description=…, patterns=…, urlconf=…, version=…) - added:
constructor EndpointEnumerator(patterns=…, urlconf=…) - added:
field BaseSchemaGenerator.coerce_path_pk - added:
field BaseSchemaGenerator.endpoint_inspector_cls - added:
function endpoint_ordering(endpoint) - added:
function get_pk_name(model) - added:
function is_api_view(callback) - added:
method BaseSchemaGenerator.coerce_path(path, method, view) - added:
method BaseSchemaGenerator.create_view(callback, method, request=…) - added:
method BaseSchemaGenerator.get_schema(request=…, public=…) - added:
method BaseSchemaGenerator.has_view_permissions(path, method, view) - added:
method EndpointEnumerator.get_allowed_methods(callback) - added:
method EndpointEnumerator.get_api_endpoints(patterns=…, prefix=…) - added:
method EndpointEnumerator.get_path_from_regex(path_regex) - added:
method EndpointEnumerator.should_include_endpoint(path, callback)
- added:
class DefaultSchema(ViewInspector) - added:
class ViewInspector - added:
constructor ViewInspector() - added:
field ViewInspector.header_regex - added:
method ViewInspector.get_description(path, method) - added:
property ViewInspector.view
- added:
class AutoSchema(ViewInspector) - added:
class SchemaGenerator(BaseSchemaGenerator) - added:
constructor AutoSchema(tags=…, operation_id_base=…, component_name=…) - added:
field AutoSchema.method_mapping - added:
field AutoSchema.request_media_types - added:
field AutoSchema.response_media_types - added:
method AutoSchema.allows_filters(path, method) - added:
method AutoSchema.get_component_name(serializer) - added:
method AutoSchema.get_components(path, method) - added:
method AutoSchema.get_field_name(field) - added:
method AutoSchema.get_filter_parameters(path, method) - added:
method AutoSchema.get_operation(path, method) - added:
method AutoSchema.get_operation_id(path, method) - added:
method AutoSchema.get_operation_id_base(path, method, action) - added:
method AutoSchema.get_pagination_parameters(path, method) - added:
method AutoSchema.get_paginator() - added:
method AutoSchema.get_path_parameters(path, method) - added:
method AutoSchema.get_reference(serializer) - added:
method AutoSchema.get_request_body(path, method) - added:
method AutoSchema.get_request_serializer(path, method) - added:
method AutoSchema.get_response_serializer(path, method) - added:
method AutoSchema.get_responses(path, method) - added:
method AutoSchema.get_serializer(path, method) - added:
method AutoSchema.get_tags(path, method) - added:
method AutoSchema.map_choicefield(field) - added:
method AutoSchema.map_field(field) - added:
method AutoSchema.map_field_validators(field, schema) - added:
method AutoSchema.map_parsers(path, method) - added:
method AutoSchema.map_renderers(path, method) - added:
method AutoSchema.map_serializer(serializer) - added:
method SchemaGenerator.check_duplicate_operation_id(paths) - added:
method SchemaGenerator.get_info() - added:
method SchemaGenerator.get_schema(request=…, public=…)
- added:
function get_pk_description(model, model_field) - added:
function is_list_view(path, method, view)
- added:
class SchemaView(APIView) - added:
constructor SchemaView(*args, **kwargs) - added:
field SchemaView.public - added:
field SchemaView.renderer_classes - added:
field SchemaView.schema - added:
field SchemaView.schema_generator - added:
method SchemaView.get(request, *args, **kwargs) - added:
method SchemaView.handle_exception(exc)
- removed:
class BaseSerializer.Meta(object) - removed:
class DictWithMetadata(dict) - removed:
class HyperlinkedModelSerializerOptions(ModelSerializerOptions) - removed:
class ModelSerializerOptions(SerializerOptions) - removed:
class NestedValidationError(ValidationError) - removed:
class RelationsList(list) - removed:
class SerializerOptions(object) - removed:
class SortedDictWithMetadata(SortedDict) - removed:
constructor HyperlinkedModelSerializerOptions(meta) - removed:
constructor ModelSerializerOptions(meta) - removed:
constructor NestedValidationError(message) - removed:
constructor SerializerOptions(meta) - removed:
field ModelSerializer.field_mapping - removed:
function pretty_name(name) - removed:
method BaseSerializer.augment_field(field, field_name, key, value) - removed:
method BaseSerializer.delete_object(obj) - removed:
method BaseSerializer.field_from_native(data, files, field_name, into) - removed:
method BaseSerializer.field_to_native(obj, field_name) - removed:
method BaseSerializer.from_native(data, files=…) - removed:
method BaseSerializer.get_default_fields() - removed:
method BaseSerializer.get_field_key(field_name) - removed:
method BaseSerializer.get_fields() - removed:
method BaseSerializer.get_identity(data) - removed:
method BaseSerializer.metadata() - removed:
method BaseSerializer.perform_validation(attrs) - removed:
method BaseSerializer.restore_fields(data, files) - removed:
method BaseSerializer.restore_object(attrs, instance=…) - removed:
method BaseSerializer.save_object(obj, **kwargs) - removed:
method BaseSerializer.to_native(obj) - removed:
method BaseSerializer.validate(attrs) - removed:
method HyperlinkedModelSerializer.get_default_fields() - removed:
method HyperlinkedModelSerializer.get_identity(data) - removed:
method HyperlinkedModelSerializer.get_pk_field(model_field) - removed:
method HyperlinkedModelSerializer.get_related_field(model_field, related_model, to_many) - removed:
method ModelSerializer.from_native(data, files) - removed:
method ModelSerializer.full_clean(instance) - removed:
method ModelSerializer.get_default_fields() - removed:
method ModelSerializer.get_field(model_field) - removed:
method ModelSerializer.get_nested_field(model_field, related_model, to_many) - removed:
method ModelSerializer.get_pk_field(model_field) - removed:
method ModelSerializer.get_related_field(model_field, related_model, to_many) - removed:
method ModelSerializer.get_validation_exclusions(instance=…) - removed:
method ModelSerializer.restore_object(attrs, instance=…) - removed:
method ModelSerializer.save_object(obj, **kwargs) - removed:
property BaseSerializer.fields - removed:
property NestedValidationError.messages - changed:
class BaseSerializer(WritableField) → class BaseSerializer(Field) - changed:
class Serializer(six.with_metaclass(SerializerMetaclass, BaseSerializer)) → class Serializer(BaseSerializer) - changed:
constructor BaseSerializer(instance=…, data=…, files=…, context=…, partial=…, many=…, allow_add_remove=…, **kwargs) → constructor BaseSerializer(instance=…, data=…, **kwargs) - changed:
method BaseSerializer.is_valid() → method BaseSerializer.is_valid(*, raise_exception=…) - added:
class ListSerializer(BaseSerializer) - added:
constructor ListSerializer(*args, **kwargs) - added:
field HyperlinkedModelSerializer.serializer_related_field - added:
field ListSerializer.child - added:
field ListSerializer.default_error_messages - added:
field ListSerializer.many - added:
field ModelSerializer.serializer_choice_field - added:
field ModelSerializer.serializer_field_mapping - added:
field ModelSerializer.serializer_related_field - added:
field ModelSerializer.serializer_related_to_field - added:
field ModelSerializer.serializer_url_field - added:
field ModelSerializer.url_field_name - added:
field Serializer.default_error_messages - added:
function as_serializer_error(exc) - added:
function raise_errors_on_nested_writes(method_name, serializer, validated_data) - added:
method BaseSerializer.create(validated_data) - added:
method BaseSerializer.to_internal_value(data) - added:
method BaseSerializer.to_representation(instance) - added:
method BaseSerializer.update(instance, validated_data) - added:
method HyperlinkedModelSerializer.build_nested_field(field_name, relation_info, nested_depth) - added:
method HyperlinkedModelSerializer.get_default_field_names(declared_fields, model_info) - added:
method ListSerializer.create(validated_data) - added:
method ListSerializer.get_initial() - added:
method ListSerializer.get_value(dictionary) - added:
method ListSerializer.is_valid(*, raise_exception=…) - added:
method ListSerializer.run_child_validation(data) - added:
method ListSerializer.run_validation(data=…) - added:
method ListSerializer.save(**kwargs) - added:
method ListSerializer.to_internal_value(data) - added:
method ListSerializer.to_representation(data) - added:
method ListSerializer.update(instance, validated_data) - added:
method ListSerializer.validate(attrs) - added:
method ModelSerializer.build_field(field_name, info, model_class, nested_depth) - added:
method ModelSerializer.build_nested_field(field_name, relation_info, nested_depth) - added:
method ModelSerializer.build_property_field(field_name, model_class) - added:
method ModelSerializer.build_relational_field(field_name, relation_info) - added:
method ModelSerializer.build_standard_field(field_name, model_field) - added:
method ModelSerializer.build_unknown_field(field_name, model_class) - added:
method ModelSerializer.build_url_field(field_name, model_class) - added:
method ModelSerializer.create(validated_data) - added:
method ModelSerializer.get_default_field_names(declared_fields, model_info) - added:
method ModelSerializer.get_extra_kwargs() - added:
method ModelSerializer.get_field_names(declared_fields, info) - added:
method ModelSerializer.get_fields() - added:
method ModelSerializer.get_unique_for_date_validators() - added:
method ModelSerializer.get_unique_together_constraints(model) - added:
method ModelSerializer.get_unique_together_validators() - added:
method ModelSerializer.get_uniqueness_extra_kwargs(field_names, declared_fields, extra_kwargs) - added:
method ModelSerializer.get_validators() - added:
method ModelSerializer.include_extra_kwargs(kwargs, extra_kwargs) - added:
method ModelSerializer.update(instance, validated_data) - added:
method Serializer.get_fields() - added:
method Serializer.get_initial() - added:
method Serializer.get_validators() - added:
method Serializer.get_value(dictionary) - added:
method Serializer.run_validation(data=…) - added:
method Serializer.run_validators(value) - added:
method Serializer.set_value(dictionary, keys, value) - added:
method Serializer.to_internal_value(data) - added:
method Serializer.to_representation(instance) - added:
method Serializer.validate(attrs) - added:
property BaseSerializer.validated_data - added:
property ListSerializer.data - added:
property ListSerializer.errors - added:
property Serializer.data - added:
property Serializer.errors - added:
property Serializer.fields - added:
static method BaseSerializer.many_init(*args, **kwargs) - added:
variable ALL_FIELDS - added:
variable LIST_SERIALIZER_KWARGS - added:
variable LIST_SERIALIZER_KWARGS_REMOVE
- removed:
method APISettings.validate_setting(attr, val) - removed:
variable USER_SETTINGS - changed:
class APISettings(object) → class APISettings - added:
function reload_api_settings(*args, **kwargs) - added:
method APISettings.reload() - added:
property APISettings.user_settings - added:
variable REMOVED_SETTINGS
- added:
variable HTTP_102_PROCESSING - added:
variable HTTP_103_EARLY_HINTS - added:
variable HTTP_207_MULTI_STATUS - added:
variable HTTP_208_ALREADY_REPORTED - added:
variable HTTP_226_IM_USED - added:
variable HTTP_308_PERMANENT_REDIRECT - added:
variable HTTP_418_IM_A_TEAPOT - added:
variable HTTP_421_MISDIRECTED_REQUEST - added:
variable HTTP_422_UNPROCESSABLE_ENTITY - added:
variable HTTP_423_LOCKED - added:
variable HTTP_424_FAILED_DEPENDENCY - added:
variable HTTP_425_TOO_EARLY - added:
variable HTTP_426_UPGRADE_REQUIRED - added:
variable HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS - added:
variable HTTP_506_VARIANT_ALSO_NEGOTIATES - added:
variable HTTP_507_INSUFFICIENT_STORAGE - added:
variable HTTP_508_LOOP_DETECTED - added:
variable HTTP_509_BANDWIDTH_LIMIT_EXCEEDED - added:
variable HTTP_510_NOT_EXTENDED
- removed:
function break_long_headers(header) - removed:
function replace_query_param(url, key, val) - removed:
function urlize_quoted_links(text, trim_url_limit=…, nofollow=…, autoescape=…) - changed:
function optional_logout(request, user) → function optional_logout(request, user, csrf_token) - added:
class CodeNode(template.Node) - added:
constructor CodeNode(lang, code) - added:
field CodeNode.style - added:
function add_nested_class(value) - added:
function as_list_of_strings(value) - added:
function as_string(value) - added:
function format_value(value) - added:
function get_pagination_html(pager) - added:
function highlight_code(parser, token) - added:
function items(value) - added:
function optional_docs_login(request) - added:
function render_field(field, style) - added:
function render_form(serializer, template_pack=…) - added:
function render_markdown(markdown_text) - added:
method CodeNode.render(context)
- changed:
class BaseThrottle(object) → class BaseThrottle
- changed:
function apply_suffix_patterns(urlpatterns, suffix_pattern, suffix_required) → function apply_suffix_patterns(urlpatterns, suffix_pattern, suffix_required, suffix_route=…)
- removed:
variable template_name - added:
variable app_name
- changed:
function get_breadcrumbs(url) → function get_breadcrumbs(url, request=…)
- removed:
class SafeDumper(yaml.SafeDumper) - removed:
method SafeDumper.represent_decimal(data) - removed:
method SafeDumper.represent_mapping(tag, mapping, flow_style=…) - removed:
variable SafeDumper - changed:
method JSONEncoder.default(o) → method JSONEncoder.default(obj) - added:
class CustomScalar - added:
static method CustomScalar.represent_timedelta(dumper, data)
- added:
class ClassLookupDict - added:
constructor ClassLookupDict(mapping) - added:
function get_detail_view_name(model) - added:
function get_field_kwargs(field_name, model_field) - added:
function get_nested_relation_kwargs(relation_info) - added:
function get_relation_kwargs(field_name, relation_info) - added:
function get_unique_error_message(model_field) - added:
function get_unique_validators(field_name, model_field) - added:
function get_url_kwargs(model_field) - added:
function needs_label(model_field, field_name) - added:
variable NUMERIC_FIELD_TYPES
- added:
class lazy_format - added:
constructor lazy_format(format_string, *args, **kwargs)
- added:
function is_html_input(dictionary) - added:
function parse_html_dict(dictionary, prefix=…, default=…) - added:
function parse_html_list(dictionary, prefix=…, default=…) - added:
variable NOT_PROVIDED
- added:
function date_formats(formats) - added:
function datetime_formats(formats) - added:
function humanize_strptime(format_string) - added:
function time_formats(formats)
- added:
function dump(*args, **kwargs) - added:
function dumps(*args, **kwargs) - added:
function load(*args, **kwargs) - added:
function loads(*args, **kwargs) - added:
function strict_constant(o)
- added:
function order_parsed_by_precedence(media_types)
- added:
function get_field_info(model) - added:
function is_abstract_model(model) - added:
variable FieldInfo - added:
variable RelationInfo
- added:
function field_repr(field, force_many=…) - added:
function list_repr(serializer, indent) - added:
function manager_repr(value) - added:
function serializer_repr(serializer, indent, force_many=…) - added:
function smart_repr(value)
- added:
class BindingDict(MutableMapping) - added:
class BoundField - added:
class JSONBoundField(BoundField) - added:
class NestedBoundField(BoundField) - added:
class ReturnDict(dict) - added:
class ReturnList(list) - added:
constructor BindingDict(serializer) - added:
constructor BoundField(field, value, errors, prefix=…) - added:
constructor NestedBoundField(field, value, errors, prefix=…) - added:
constructor ReturnDict(*args, **kwargs) - added:
constructor ReturnList(*args, **kwargs) - added:
method BoundField.as_form_field() - added:
method JSONBoundField.as_form_field() - added:
method NestedBoundField.as_form_field() - added:
method ReturnDict.copy()
- added:
function datetime_ambiguous(dt: datetime) - added:
function datetime_exists(dt) - added:
function valid_datetime(dt)
- added:
function remove_query_param(url, key) - added:
function replace_query_param(url, key, val)
- added:
class BaseUniqueForValidator - added:
class ProhibitSurrogateCharactersValidator - added:
class UniqueForDateValidator(BaseUniqueForValidator) - added:
class UniqueForMonthValidator(BaseUniqueForValidator) - added:
class UniqueForYearValidator(BaseUniqueForValidator) - added:
class UniqueTogetherValidator - added:
class UniqueValidator - added:
constructor BaseUniqueForValidator(queryset, field, date_field, message=…) - added:
constructor UniqueTogetherValidator(queryset, fields, message=…, condition_fields=…, condition=…, code=…, nulls_distinct=…) - added:
constructor UniqueValidator(queryset, message=…, lookup=…) - added:
field BaseUniqueForValidator.message - added:
field BaseUniqueForValidator.missing_message - added:
field BaseUniqueForValidator.requires_context - added:
field ProhibitSurrogateCharactersValidator.code - added:
field ProhibitSurrogateCharactersValidator.message - added:
field UniqueForDateValidator.message - added:
field UniqueForMonthValidator.message - added:
field UniqueForYearValidator.message - added:
field UniqueTogetherValidator.code - added:
field UniqueTogetherValidator.message - added:
field UniqueTogetherValidator.missing_message - added:
field UniqueTogetherValidator.requires_context - added:
field UniqueValidator.message - added:
field UniqueValidator.requires_context - added:
function qs_exists(queryset) - added:
function qs_exists_with_condition(queryset, condition, against) - added:
function qs_filter(queryset, **kwargs) - added:
method BaseUniqueForValidator.enforce_required_fields(attrs) - added:
method BaseUniqueForValidator.exclude_current_instance(attrs, queryset, instance) - added:
method BaseUniqueForValidator.filter_queryset(attrs, queryset, field_name, date_field_name) - added:
method UniqueForDateValidator.filter_queryset(attrs, queryset, field_name, date_field_name) - added:
method UniqueForMonthValidator.filter_queryset(attrs, queryset, field_name, date_field_name) - added:
method UniqueForYearValidator.filter_queryset(attrs, queryset, field_name, date_field_name) - added:
method UniqueTogetherValidator.enforce_required_fields(attrs, serializer) - added:
method UniqueTogetherValidator.exclude_current_instance(attrs, queryset, instance) - added:
method UniqueTogetherValidator.filter_queryset(attrs, queryset, serializer) - added:
method UniqueValidator.exclude_current_instance(queryset, instance) - added:
method UniqueValidator.filter_queryset(value, queryset, field_name)
- added:
class AcceptHeaderVersioning(BaseVersioning) - added:
class BaseVersioning - added:
class HostNameVersioning(BaseVersioning) - added:
class NamespaceVersioning(BaseVersioning) - added:
class QueryParameterVersioning(BaseVersioning) - added:
class URLPathVersioning(BaseVersioning) - added:
field AcceptHeaderVersioning.invalid_version_message - added:
field BaseVersioning.allowed_versions - added:
field BaseVersioning.default_version - added:
field BaseVersioning.version_param - added:
field HostNameVersioning.hostname_regex - added:
field HostNameVersioning.invalid_version_message - added:
field NamespaceVersioning.invalid_version_message - added:
field QueryParameterVersioning.invalid_version_message - added:
field URLPathVersioning.invalid_version_message - added:
method AcceptHeaderVersioning.determine_version(request, *args, **kwargs) - added:
method BaseVersioning.determine_version(request, *args, **kwargs) - added:
method BaseVersioning.is_allowed_version(version) - added:
method BaseVersioning.reverse(viewname, args=…, kwargs=…, request=…, format=…, **extra) - added:
method HostNameVersioning.determine_version(request, *args, **kwargs) - added:
method NamespaceVersioning.determine_version(request, *args, **kwargs) - added:
method NamespaceVersioning.get_versioned_viewname(viewname, request) - added:
method NamespaceVersioning.reverse(viewname, args=…, kwargs=…, request=…, format=…, **extra) - added:
method QueryParameterVersioning.determine_version(request, *args, **kwargs) - added:
method QueryParameterVersioning.reverse(viewname, args=…, kwargs=…, request=…, format=…, **extra) - added:
method URLPathVersioning.determine_version(request, *args, **kwargs) - added:
method URLPathVersioning.reverse(viewname, args=…, kwargs=…, request=…, format=…, **extra)
- removed:
method APIView.metadata(request) - changed:
function exception_handler(exc) → function exception_handler(exc, context) - changed:
function get_view_description(view_cls, html=…) → function get_view_description(view, html=…) - changed:
function get_view_name(view_cls, suffix=…) → function get_view_name(view) - changed:
method APIView.permission_denied(request) → method APIView.permission_denied(request, message=…, code=…) - added:
field APIView.metadata_class - added:
field APIView.schema - added:
field APIView.versioning_class - added:
function set_rollback() - added:
method APIView.determine_version(request, *args, **kwargs) - added:
method APIView.get_exception_handler() - added:
method APIView.get_exception_handler_context() - added:
method APIView.raise_uncaught_exception(exc)
- changed:
class ViewSetMixin(object) → class ViewSetMixin - changed:
method ViewSetMixin.initialize_request(request, *args, **kargs) → method ViewSetMixin.initialize_request(request, *args, **kwargs) - added:
method ViewSetMixin.get_extra_action_url_map() - added:
method ViewSetMixin.reverse_action(url_name, *args, **kwargs) - added:
static method ViewSetMixin.get_extra_actions()