2015-06-23 5 views
0

У меня есть форма с 5 элементами (три выпадающих списка, дата, текст). Когда я нажимаю кнопку отправки, все элементы формы получают сброс (выпадающий присваивается первому значению, поле даты и текста становится пустым).Сохранять элементы формы, выбранные после формы submit

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


Вариант 1

С точки зрения я вернуть выбранные значения обратно в шаблон. Теперь при генерации шаблона сгенерировать варианты шаблонов с использованием шаблонов Джанго для /, если условия (те, которые начинаются с фигурными скобками)


Вариант 2 - Предпочтительные

С точки зрения я верните выбранные значения обратно в шаблон и как-то передайте эти значения в javascript. После этого будет необходимо получить элементы статической формы, используя getElementById и присвоить значения. Тем не менее, я не уверен, как передать переданное значение javascript. Или я должен написать сценарий в самом шаблоне?


Вариант 3

Использовать кэш - не менее заинтересованы


Что вы предлагаете, я должен делать? Есть ли еще один 4-й вариант, который лучше и приятнее? Подача форм и сохранение значений формы являются важной частью веб-разработки. Поэтому я надеюсь, что может быть лучший способ.

EDIT: Я не использую модель модели django. Скорее я использую простую форму html и вызываю представление на submit (post)

ответ

0

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

def your_form_view(request): 
    form = YourForm(request.POST) 

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

model = YourModel.objects.get(id=123) 
form = YourModelForm(request.POST, instance=model) 

Если вы не используете ModelForms вы можете указать значения по умолчанию с помощью параметра initial вместо этого.

+0

ohh на самом деле я не использую ModelForm. Я просто написал простую html-форму и передал ее в представление, используя сообщение. –

+0

Это не должно меняться, пока вы поставляете форму с запросом.POST в соответствии с моим первым примером. Если вы сделаете это, представленные значения будут сохраняться после каждого успешного запроса (в).Если вы хотите, чтобы они сохранялись для последующих запросов GET, вам придется их где-то хранить и поставлять с помощью параметра 'initial'. – Simon

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