【问题标题】:merge different views in one django template在一个 django 模板中合并不同的视图
【发布时间】:2012-04-29 05:16:09
【问题描述】:

请帮助这个新手!!!

我有两种不同的看法:

@login_required
@csrf_protect
def viewone(request):

#some code here...

if request.method == 'POST':
    form = ViewOne(request.POST)
    if form.is_valid():
        try:
            #some code here

        return response
else:
    form = ViewOne()

return render_to_response('templateone.html', { 'form': form, }, context_instance=RequestContext(request))

@login_required
@csrf_protect
def viewtwo(request):

if request.method == "GET":

    #code here

    return render_to_response('templatetwo.html', {'form1': MyForm(request.GET)}, context_instance=RequestContext(request))
else:
    return render_to_response('templatetwo.html', {'form1': MyForm()}, context_instance=RequestContext(request))

我应该想知道如何将这些视图合并/渲染到同一个模板中,以便同时使用这两种功能!请帮助我遵循正确的方向!

【问题讨论】:

    标签: django templates views


    【解决方案1】:

    如果你的问题更清楚会很好,因为我认为我不完全理解你想要什么。但如果我这样做,这里有几个选择:
    1)如果你可以将你的逻辑分成一些功能,那就去做吧。然后您可以从您的第三个视图调用这些函数,获取您的模板参数并使用您想要的所有内容渲染模板。
    2) 您也可以使用ajax 在同一页面上分别加载这两个模板。

    可能还有很多其他选择,这实际上取决于您最终想要得到什么(不清楚)。

    【讨论】:

      【解决方案2】:

      如果您想从一个视图将相同的表单合并到一个模板中:

      from django.shortcuts import render
      
      @login_required
      @csrf_protect
      def viewone(request):
      
         ctx = {} # context dict
         if request.method == 'GET':
           # code here
           form1 = MyForm(request.GET)
           ctx['form1'] = form1
           return render(request,'template.html',ctx)
      
         if request.method == 'POST':
           form = ViewOne(request.POST)
           if form.is_valid():
               # code here
               return render(request,'some.html')
           else:
              form = ViewOne()
              ctx['form'] = form
              return render(request,'template.html',ctx)
      

      然后在你的template.html:

      {% if form %}
         {{ form }}
      {% endif %}
      
      {% if form1 %}
         {{ form1 }}
      {% endif %}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多