2017-02-09 2 views
0

2つのビューがあり、それらのビューを1つのHTMLページにレンダリングしたい。 HTMLページに単一のビューをレンダリングする方法は分かっていますが、1つのHTMLページに2つのビューをレンダリングする方法はわかりません。1つのHTMLテンプレートに2つのビューをレンダリングする

URLに対応する作業

<html> 
    <body> 
    <h1>its working </h1> 
    first view <br> 
    <form action ='' method = 'POST'> {% csrf_token %} 
     {{form.as_p}} 
     <input type='submit' name='submit'> 
    </form> 

    2nd view<br> 
    <form action='' method='POST'> {% csrf_token %} 
     {{f.as_p}} 
     <input type='submit' name='submit'> 
    </form> 
    </body 
</html> 

単一のビューabout.html views.pyファイル

from django.shortcuts import render 
from django.http import HttpResponse 
from app.models import * 
# Create your views here. 

def collegeview(request): 

    if request.method == 'POST': 
     form = collegeform(requst.POST) 
     if form.is_valid(): 
      form.save() 
      return HttpResponse('its done here') 
     else: 
      form = collegeform() 
      return render(request, 'about.html', {'form':form})     

def schoolview(request): 

    if request.method == 'POST': 
     f = schoolform(requst.POST) 
     if f.is_valid(): 
      f.save() 
      return HttpResponse('its done here') 
     else: 
      f = schoolform() 
      return render(request, 'about.html', {'f':f}) 

答えて

1

同じテンプレートに2つの異なるビューをレンダリングしない可能性がありますが、その中で両方のフォームを単一のビューでロジックの両方を追加し、レンダリングすることができます:

from django.shortcuts import render 
from django.http import HttpResponse 
from app.models import * 

def institute_view(request): 

    f = schoolform(requst.POST or None) 
    form = collegeform(requst.POST or None) 
    if request.method == 'POST': 
     if form.is_valid(): 
      form.save() 
      return HttpResponse('its done here') 
     elif f.is_valid(): 
      f.save() 
      return HttpResponse('its done here') 
     else: 
      f = schoolform() 
      form = collegeform() 

    return render(request, 'about.html', {'f':f,'form':form}) 

をこの方法により、フォームの両方を誰かが投稿されるたびに値はそれに応じて保存されます。

関連する問題