Разбор &-символа в GET-запросе с помощью Django и Vue

Мы используем axios для передачи GET запроса нашему экземпляру django, который разбивает его на поисковые запросы и запускает поиск. Все работало хорошо, пока мы не столкнулись с нестандартной ситуацией. Мы используем urlencode, чтобы убедиться, что в строках нет пустых пробелов или других

Обобщим проблему, у нас есть TextField под названием "name" и мы хотим искать по термину "A & B Company". Однако, проблема в том, что когда запрос достигает django.

Мы ожидали, что name=A%20&%20B%20Company&field=value будет разобрано как name='A & B Company' и field='value'.

Вместо этого он разбирается как name='A ' 'B Company' и field='value'. Символ & неправильно воспринимается как разделитель, несмотря на то, что он закодирован.

Есть ли способ указать django GET параметру, что определенные символы & являются частью значения, вместо разделителей для полей?

Вы можете использовать библиотеку urllib

class ModelExample(models.Model):
    name = models.TextField()


# in view...
from urllib.parse import parse_qs

instance = ModelExample(name="name=A%20&%20B%20Company&field=value")
dict_qs = parse_qs(instance.name)

dict_qs содержит dict с расшифрованной строкой запроса

Дополнительную информацию о urllib.parse вы можете найти здесь: https://docs.python.org/3/library/urllib.parse.html

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