【问题标题】:render two views to a single html template将两个视图呈现到一个 html 模板
【发布时间】:2017-02-09 08:52:02
【问题描述】:

我有两个视图,我想将这些视图呈现到单个 HTML 页面。我知道如何将单个视图呈现到 HTML 页面,但不知道如何将两个视图呈现到单个 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})

关于.html

<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>

对应于 URL 的单一视图工作。

【问题讨论】:

    标签: python django django-views


    【解决方案1】:

    不可能将两个不同的视图渲染到同一个模板,但您可以在一个视图中添加两个逻辑,然后在其中渲染两个表单:

    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})
    

    通过这种方法,您的两个表单都可以处理,并且每当其中任何人发布时,都会相应地保存值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      • 2018-09-29
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      • 2012-09-30
      • 2014-12-12
      相关资源
      最近更新 更多