1

この初心者を助けてください!!!

私は2つの異なる見解を持っています:

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

両方の機能を使用するために、これらのビューを同じテンプレートにマージ/レンダリングする方法を知りたいです! 正しい方向に進むのを手伝ってください!

4

2 に答える 2

2

私はあなたが何を望んでいるかを完全には理解していないと思うので、あなたの質問がもっと明確であれば良いと思います.
1) ロジックをいくつかの関数に分割できる場合は、それを実行します。次に、3 番目のビューからこれらの関数を呼び出し、テンプレートの引数を取得して、必要なものすべてを含むテンプレートをレンダリングできます。
2) ajax を使用して、この 2 つのテンプレートを同じページに別々にロードすることもできます。

他にも多くのオプションがある可能性がありますが、最終的に何を取得しようとしているのかによって異なります (明確ではありません)。

于 2012-04-18T00:33:47.533 に答える
0

1 つのビューから 1 つのテンプレートに同じフォームを結合する場合:

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 %}
于 2012-04-18T04:57:48.477 に答える