2009-07-07 3 views
1

Я использую django и имею статическую веб-страницу с формой GET и около 30 флажков. Пользователь выбирает различные поля и нажимает на поиск, а результат из базы данных возвращается на ту же страницу в таблице. Тем не менее, все флажки были очищены, так как HTML не имеет места.Сохранение флажка указано на той же странице с результатами запроса

Какое простейшее решение для «запоминания» состояния флажков? Я просмотрел django docs, но примеры просто используют переменную и IF для одной текстовой формы. Наверняка, мне не нужно проверять, установлен ли каждый флажок в запросе? Кроме того, моя форма была создана на заказ, а не с использованием форм django.

В конце концов, я планировал использовать JSON для этой страницы и только обновлять таблицу, и это решило бы эту проблему, но я не уверен, что она представит еще много, например, кнопка возврата, не работающая для предыдущих поисков.

+0

Спасибо всем. Вы помогли мне уточнить, что я не пропустил ни одного ярлыка Django (с пользовательской формой), и в итоге я перешел на использование JSON, так что теперь мне просто нужно выяснить, что у вас есть. Хороших выходных. – paulito

ответ

2

"Что самое простое решение 'вспомнить' состояние флажков?"

Веб-транзакции являются лицами без гражданства.

Существует несколько распространенных способов реализации состояния.

  1. Сессии. Если ваш пользователь зарегистрирован, у них есть сеанс. Храните вещи в своей сессии. Форма, которую они отправляют в сеанс. Затем это можно восстановить, чтобы отправить новую форму обратно.

  2. Cookies. Сеансы используют файлы cookie. Вы можете использовать файлы cookie вручную. Здесь у вас есть два выбора.

    • Поместите эту форму в корзину. Отправьте его с ответом. Проверяйте файл cookie в каждом запросе, чтобы вы знали, для чего нужно занести форму.

    • Положить ключ сессии в файл cookie. Это то, что Django делает для вас. Не реализуйте это самостоятельно.

  3. Запросить строки в URL-адресе. У вас есть те же два варианта, что и для файлов cookie. Либо сделайте настройки большими старыми строками base64, либо передайте идентификатор, который стоит для сеанса.

0

Есть способы исправить проблему с обратной кнопкой (хэш-теги и еще что-то добавленные к URL-адресу). Однако способ, которым я всегда это выполнял, - это именно так. По сути, я бы передал флажки в виде массива в POST, а затем, когда вы идете, чтобы сделать их, просто создайте цикл, который сделает все необходимые вам поля, и проверите против POST, чтобы проверить, было ли это проверено или нет. Кроме этого, я не знаю.

0

Использование GET? Хорошо. Установите флажки так же, как вы получаете доступ к данным текстового поля.

request.GET [ ''] yourfield

Использование печати staments для проверки информации, имеющейся в ГЭТ.

печати request.GET [ 'yourfield']

0

Если вы используете объект Form, вы можете просто передать конструктору запрос и выполнить его.Если вы делаете это вручную, вам нужно будет немного подделать сеанс.

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