Django Rest Framework Url Field Serializer - PullRequest
       8

Django Rest Framework Url Field Serializer

0 голосов
/ 26 сентября 2018

У меня есть модель с именем File, которая содержит поле с именем 'url'.

class File(models.Model):
    """
    Generic File model
    """

    filename = models.CharField(max_length=500)
    url = models.URLField()

Теперь, если я передам этот URL:

 https://s3.us-east-2.amazonaws.com/xyz/2018-09-25_17:39:16.80 (1).pdf

Обратите внимание на пробел в URL ранее(1).Сериализатор модели выдает ошибку, утверждая, что URL-адрес недействителен.

Нужно ли самому кодировать URL-адрес, заменив пробел на «% 20»

1 Ответ

0 голосов
/ 26 сентября 2018

Прежде всего, генерируйте файлы без пробелов, если это возможно.Это было бы лучшим решением.

Если это невозможно, замените URLField() на CharField(), что поставит под угрозу Проверка URL .Но в качестве допустимого URL можно использовать .

Если вы все еще хотите использовать URLField(), , напишите пользовательский валидатор и добавьте его через validator параметр

<b>def custom_url_validator(value):
    # your validation</b>

class File(models.Model):
    """
    Generic File model
    """

    filename = models.CharField(max_length=500)
    url = models.URLField(<b>validators=[custom_url_validator,]</b>)
...