2012-02-28 1 views
0

В частности мой промежуточный слой заинтересован различать запрос GET по:Могу ли я получить сырое querystring в промежуточном программном обеспечении django?

  1. /администратор/приложение/модель /?
  2. /администратор/приложение/модель/

URL # 1 был начат с оборванным знаком вопроса. Из моих экспериментов django HttpRequest проглатывает его, и я не могу отличить их. Есть ли способ получить необработанную строку нефильтрованного запроса?

ответ

1

? следует избегать как %3F. Итак, может быть, вы должны выбрать другой символ, без таких проблем?

+0

Эта проблема связана с ссылками, созданными для ModelAdmin, когда вы объявляете дату_иерархию. Он создает ссылку «Все даты» для сброса выбора, а django генерирует вопросительный знак. – canadadry

+0

@BonAmi 'url /?' И 'url /' точно такие же и будут (и должны) обрабатываться одинаково. – DrTyrsa

1

Это может быть невозможно. Как правило, приложение django обслуживается из-за интерфейса WSGI, к моменту поступления запроса в django он уже обрабатывается в PATH_INFO (до?) И QUERY_STRING (после?). Когда django запускает get_full_path, это просто конкатенация этих двух вещей с помощью? в середине, если необходимо.

Это также плохая идея: HTTP не ожидает, что URL-адреса будут вести себя по-другому с завершающим?, Поскольку это означает только пустой набор параметров, что является тем же самым, что и отсутствие? означает. Помимо запутывания, это может привести к проблемам совместимости, поскольку прокси-сервер или веб-браузер могут потерять конечный «?» в ожидании, что он не будет иметь никакого эффекта.

Смежные вопросы