1

请帮助这个新人!!!

我有两种不同的看法:

@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)如果你可以将你的逻辑分成一些功能,那就去做吧。然后你可以从你的第三个视图调用这些函数,获取你的模板参数并用你想要的一切渲染模板。
2) 您也可以使用 ajax 在同一页面上分别加载这两个模板。

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

于 2012-04-18T00:33:47.533 回答
0

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

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