diff --git a/rest_framework/validators.py b/rest_framework/validators.py index 4c444cf01e..4b43910db9 100644 --- a/rest_framework/validators.py +++ b/rest_framework/validators.py @@ -6,6 +6,8 @@ object creation, and makes it possible to switch between using the implicit `ModelSerializer` class and an equivalent explicit `Serializer` class. """ +import re + from django.core.exceptions import FieldError from django.db import DataError from django.db.models import Exists @@ -216,13 +218,14 @@ def __eq__(self, other): class ProhibitSurrogateCharactersValidator: + _regex = re.compile(r'[\ud800-\udfff]') + message = _('Surrogate characters are not allowed: U+{code_point:X}.') code = 'surrogate_characters_not_allowed' def __call__(self, value): - for surrogate_character in (ch for ch in str(value) - if 0xD800 <= ord(ch) <= 0xDFFF): - message = self.message.format(code_point=ord(surrogate_character)) + if match := self._regex.search(str(value)): + message = self.message.format(code_point=ord(match.group())) raise ValidationError(message, code=self.code) def __eq__(self, other): pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy