Django проверяет и возвращается к URL предварительного просмотра?
-
12-09-2019 - |
Вопрос
я спрашиваю снова :), я не знаю, как это сделать.
Мой английский не слишком хорош, но я попробую спросить об этом:
как я могу проверить форму и вернуться к URL-адресу предварительного просмотра (та же форма просмотра) и показать ошибки проверки?, я спрашиваю об этом, потому что у меня есть 2 формы, действие первой формы переходит ко второй форме (POST), но в этой второй форме (view?) мне нужно подтвердить первую форму, если первая форма действительна, я хочу показать вторую форму, иначе я покажу первую форму с ошибками.
я не знаю, понятно ли мне, мне жаль.
я думаю об этом:
def secondForm(request):
if request.method =='POST':
form = FirstForm(request.POST)
if form.is_valid():
fields = request.POST.copy()
# showing the second form?? with x differents fields, i have 2.
if fields['xvalue']=='1': # this is from radio buttons
form2 = xSecondForm()
elif fields['xvalue']=='2':
form2 = ySecondForm()
else:
# here go back with erros msgs????
#return render_to_response('firstFormTemplate.html',{'form': form}, context_instance=RequestContext(request))
else:
#return something or go back ???
Спасибо, ребята Полиция:я счастлив, я кодирую Django + python : D
Решение
Да, formwizard может быть вашим ответом, но вы, вероятно, могли бы сделать это с некоторой логикой в представлении.
Что - то вроде:
def your_view(request):
context = {}
data = request.method == 'POST' and request.POST or None
form = FirstForm(data=data)
# If the first form is valid, build the second.
if form.is_valid():
if form.cleaned_data['xvalue'] == 1:
form2 = xSecondForm(data=data)
else:
form2 = ySecondForm(data=data)
context['form2'] = form2
# If both forms are valid, everything is done.
if form.is_valid() and form2.is_valid():
# TODO: put save/processing logic here
# Now redirect.
return http.HttpResponseRedirect(...)
# If we get here, either there hasn't been a post yet, the second form hasn't
# been entered, or there was an error in either form.
context['form'] = form
return render_to_response(...)
Другие советы
Хорошо, ребята, я думаю, что решение mi - это FormWizard :)
но мне кое-что не ясно с моей Второй формой, потому что мне нужно показать вторую форму по-другому, если выбранная опция в radio предназначена для большего или меньшего количества полей (во второй форме)
;(
Я думаю, вы хотите использовать process_step(), чтобы выполнить некоторую логику в отношении того, как / что отображается в вашей второй форме.