Несоответствие регулярных выражений в Django - PullRequest
3 голосов
/ 29 ноября 2011

В настоящее время я пытаюсь запустить некоторые тесты на веб-службе RESTful и использую тестовый клиент django для проверки следующего запроса get с помощью Client.get:

'/api/browse=ia?filter=General' 

Вот мои URL:

(r'^api/browse=([\w\s]+)$', 'webservice_browse_nofilter')
(r'^api/browse=([\w\s]+)\?filter=(\w+)$', 'webservice_browse')

Проблема в том, что вызывается неправильная функция. В этом случае я хочу вызвать вторую функцию, но вместо этого вызывается первая. Проблема в том, что? должен выступать в качестве разделителя аргументов, но сопоставляется с первым шаблоном, который по-прежнему отправляет правильный аргумент 'ia' в функцию вместо всей строки. Я чувствую, что что-то упустил, но я не знаю что. Намерение состоит в том, чтобы вызвать вторую функцию с аргументами 'ia' и 'General'.

Ответы [ 3 ]

1 голос
/ 29 ноября 2011

См. Django и параметры строки запроса

Как говорит Бретт Томас, параметры запроса будут доступны в request.GET

1 голос
/ 29 ноября 2011

Чтобы уточнить, что сказали другие ответчики, все после? является не частью URL-адреса и не будет соответствовать в регулярном выражении.

1 голос
/ 29 ноября 2011

Эти шаблоны являются технически одинаковыми URL, только с разными строками запроса.

Задумывались ли вы о том, чтобы объединить их в одно представление и проверить, возвращает ли request.GET.get ('filter') что-нибудь?

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

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