Как обрабатывать несколько форм в одной функции в представлениях в Django - PullRequest
0 голосов
/ 19 марта 2020

Мне нужно обработать две формы в одной функции:

HTML page

<form name="selectgenderform" method = "POST">
  <select name='gender'>
   <option>Male</option>
   <option>Female</option>  
  </select>
 <input type = 'submit' name ='searchbtn' value= 'search' >
</form>


<form name="selectionform" method = "POST">
  <input type = 'hidden' name = 'valueofnumber' >
 <input type = 'submit' name = 'searchbtn' value= 'search' >
</form>

Views.py

 def formselection(request):
   if selectgenderform in request.POST:
     gender = request.POST.get('gender')
     ...

   elif selectionform in request.POST:
     value = request.POST.get('valueofnumber') 

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

Ответы [ 2 ]

0 голосов
/ 19 марта 2020

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

views.py

def yourView(request):
    form1 = form1()
    form2 = form2()

    if request.method == "post":
        form1 = form1(request.POST)
        form2 = form2(request.POST)

        if form1.is_valid():
            #do something
        if form2.is_valid():
            #do something else 
   contest = { "form1": form1, "form2": form2 }
   return render(request, 'template.html', context=context)

шаблон. html

    <form method="POST">
        {%csrf_token%}
        {{form1.as_p}}
        {{form2.as_p}}
    <button type="submit"> Submit </button>
    </form>
0 голосов
/ 19 марта 2020

, если вы хотите сохранить две отдельные формы:

if request.method == "POST" and "selectgenderform" in request.POST:
    *something*

if request.method == "POST" and "selectionform" in request.POST:
    *something*

вам также может потребоваться изменить входные имена для отправки на "selectgenderform" и "selectionform"

...