Извлечение массива с индексами из параметров GET в Django - PullRequest
2 голосов
/ 09 октября 2019

В моем проекте Django есть страница с таблицей на основе DataTables. В этом случае таблица использует обработку на стороне сервера с использованием представления Django и метода GET http. Представление Django распаковывает строку запроса в объект QueryDict, и моя задача - распаковать параметры DataTables для каждого столбца таблицы из этого QueryDict. Обратите внимание, что я должен использовать GET, а не POST, потому что я хочу использовать метод POST для других вещей, которые фактически изменяют данные на сервере.

DataTables отправляет данные для каждого столбца в таблице, относящиеся к строкам поиска и сортировкедля каждого столбца. Эти данные представлены согласно их документации здесь ;главное, чтобы столбчатые параметры отправлялись в строке запроса следующим образом:

...&column[5][search][value]=searchme&column[6][search][value]=more&...

Я бы хотел, чтобы это распаковывалось таким образом, чтобы результирующая структура данных выглядела как-тонапример:

column = [
    {
        'search': {
            'value': 'searchme'
        }
    },
    ...

]

... С элементами массива, представленными в строке запроса в порядке, указанном их индексами.

Существует ли стандартный способ сделать это с помощью DjangoQueryDict

1 Ответ

0 голосов
/ 10 октября 2019

Похоже, Django не реализует это. На данный момент, похоже, что у меня есть только следующие варианты:

  1. Использовать библиотеку (как Сатендра предложил в своем комментарии к вопросу) или
  2. Написать пользовательскийсинтаксический анализатор, который работает либо с необработанной строкой запроса, либо с объектом QueryDict, который уже доступен в представлениях на основе классов Django, либо
  3. Измените данные, отправляемые в представление Django, чтобы они немерный.

В этом случае я выбрал третий вариант;Я изменяю данные, которые DataTables отправляет на сервер, чтобы они могли быть переданы непосредственно в конструктор класса FilterSet или Form без изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...