CodePak
CodePak

Reputation: 113

Two HTML Forms in one DJango views

I have two simple HTML forms on one page. I want to create Django view to submit multiple Django forms. I can submit form1 but I have no clue how to submit form2.

There is lot of material on internet but they are all about Djanog forms. Please help me with HTML form submission.

HTML Form

<form action="" method=post name="form1" id="form1">
<input type="text" id="input_form1" name="input_form1">
<button type="submit">Submit</button>         
</form>

<form action="" method=post name="form2" id="form2">
<input type="text" id="form2" name="form2">
<button type="submit">Submit</button>         
</form>

Views.py

def index(request):
  if request.method == 'POST':
     input_form1 = request.POST.get('input_form1')
  return render(request, 'index.html', params)

Please elaborate how to integrate form2 in Views.py

Upvotes: 0

Views: 242

Answers (1)

oruchkin
oruchkin

Reputation: 1295

you can put hidden input inside of each form to identify them

index.html

<form action="" method="post">
    {% csrf_token %}
    <input type="text" id="input_form1" name="input_form1">
    <button type="submit">Submit</button>         
    <input type="hidden" name="which_form_is_it" value="this_is_form_1">
</form>


<form action="" method="post">
    {% csrf_token %}
    <input type="text" id="input_form2" name="form2">
    <button type="submit">Submit</button>  
    <input type="hidden" name="which_form_is_it" value="this_is_form_2">       
</form>

views.py

def index(request):
    if request.method == 'POST':
        #watch output in console
        print(request.POST)
        which_form_is_submiting = request.POST["which_form_is_it"]
        
        if str(which_form_is_submiting) == "this_is_form_1":
            #here is yor logic for data from form 1
            form_1_input = request.POST["input_form1"]
        if str(which_form_is_submiting) == "this_is_form_2":
            #here is your logic for data from form 2
            form_2_input = request.POST["input_form2"]
        return render(request, 'index.html', params)

Upvotes: 1

Related Questions