-
Когда форма не is_valid() и я показываю ту же страницу, почему-то все поля пустые. Насколько я понимаю, это работа браузера. Но ни в IE, ни в Chrome, ни в Firefox поля не перезаполняются. Может я должен ввести что-то в стиле "<input .... value='{{ form.name.val }}'>" ? Ничего такого ни в Django Docs, ни в django.forms.Form/Field я не нашел. Кто-нибудь знает что происходит?
-
Нет, это не работа браузера. Это выводят джанговские поля формы, которые генерируются по
{{ form.fieldname }}. Если у вас этого не происходит, то нам нужно будет посмотреть на код view и шаблона. -
Если использовать generic views то всё само отлично подставляется.
-
Generic view тут как бы совсем ни причем. Это поведение заложено в формы и поля форм.
-
Похоже Вы, если проверка данных не прошла, во вьюшке просто создаете новую форму.
Код в студию! -
Дело в том что HTML для форм я всегда пишу сам, единственное что я использую, это {{ form.name.errors }}. Код примерно таков:
Что скажете?def get_page(request):
if request.method='POST'
form = MyForm(request.POST)
if form.is_valid():
HttpRedirect('/thanks/') # GET after POST
return render_to_respose('page.html', locals(), context_instance = RequestContext(request)) -
Так если сами, то и текущие значения в
valueвы должны сами вставлять. -
вы сами ответили на свой вопрос - пишете сами! то есть, всесто того что напишет {{form.field}} - <input id="id_field" type="text" name="field" value="именно то, что вы потеряли" maxlength="20" /> вы пишите <input type="text" name="field" /> Рекомендация, изучайте django.forms... (я например часто пишу свои as_table() методы) или хотя бы добавляйте value="{{form.field.data}}" (или {{form.field.value}} забыл)
-
вы сами ответили на свой вопрос - пишете сами! то есть, всесто того что напишет
{{form.field}}-<input id="id_field" type="text" name="field" value="именно то, что вы потеряли" maxlength="20" />Конкретно там будет
{{ form.field.data }}. Но только в случае перепоказа. В случае начального показа надо доставать initial из формы:{{ form.initial.field }}.Но честное слово, лучше просто
{{ form.field }}, который просто выведет виджет. Я тоже люблю раскладку формы сам делать, но отдельные виджеты просто слишком сложно реализовывать в шаблонной логике. -
Спасибо всем! Всё решено.
-
generic views при том, что избавляют вот от таких ошибок :)
-
generic views при том, что избавляют вот от таких ошибок :)
??? Только что мы выяснили, что ошибка была в выводе формы в шаблоне. Вьюха как раз ведет себя точно так же, как generic.
-
упс. был неправ и невнимателен :)
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.



