Отправка HTML-формы с помощью GET и дополнительных аргументов

Вот моя ситуация, у меня есть страница с формой. Форма — это просто запрос, поэтому я использую метод «GET». У меня есть переменная, которую я передаю как токен, переменная имеет форму «x = 2 & y = 5», поскольку переменная передается на мою страницу как закодированный URL-адрес, это просто дополнительная работа, чтобы проанализировать ее в словаре из {'x':2,'y':5}. В идеале было бы что-то вроде следующего:

<form method="GET" action="/path/to/action/?x=2&y=5">
    <input type="text" name="some_other_val">
    ... more inputs here etc.
</form>

К сожалению, когда я делаю это таким образом, браузер стирает окончание x=2&y=5 и просто добавляет поля формы в качестве аргументов. Причина, по которой я не использую просто <input type="hidden" name="x" value="2">, заключается в том, что, как я уже сказал, строка уже находится в этой форме, и мне нужно будет специально ее декодировать. Добавление значения в конец URL-адреса действия проще. Любые предложения будут ценны. Обратите внимание, что я нашел очень похожую тему здесь добавление параметров URL в form PHP HTML, но ни одно из представленных решений не решает мою основную проблему. Я также попробовал добавить «&» в конце, но это тоже не сработало! Можно ли делать то, что я хочу?


person john-charles    schedule 04.03.2012    source источник
comment
мы могли бы предложить функцию, которая поможет вам выполнить необходимый анализ URL-адреса, если вы сообщите нам, какой язык вы используете для отображения страницы.   -  person imm    schedule 05.03.2012
comment
Я использую python django 1.3 на python 2.7.   -  person john-charles    schedule 05.03.2012
comment
проверьте функцию parse_qs в модуле urlparse: docs.python.org/library/ urlparse.html#urlparse.parse_qs   -  person imm    schedule 05.03.2012
comment
Благодарность! Это именно то, что мне было нужно!   -  person john-charles    schedule 05.03.2012


Ответы (1)


Вы должны использовать скрытые элементы формы для дополнительных параметров, как вы описали:

<input type="hidden" id="x" value="2" />
<input type="hidden" id="y" value="5" />

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

Я не совсем понимаю ваш аргумент против них, как будто вы можете добавить их к действию формы, вы должны иметь возможность просто изменить это на hidden элементов формы достаточно легко.

person Oded    schedule 04.03.2012
comment
У меня это НЕ сработало (Django 1.8). Мне пришлось использовать name, а не id, чтобы все заработало: <input type="hidden" name="x" value="2" /> - person Pavel Yudaev; 26.02.2017