Разбор &-символа в 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