Django проверяет и возвращается к URL предварительного просмотра?

StackOverflow https://stackoverflow.com/questions/1251673

Вопрос

я спрашиваю снова :), я не знаю, как это сделать.

Мой английский не слишком хорош, но я попробую спросить об этом:

как я могу проверить форму и вернуться к 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(), чтобы выполнить некоторую логику в отношении того, как / что отображается в вашей второй форме.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top