请帮助这个新手!!!
我有两种不同的观点:
@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))
我想知道如何将这些视图合并/渲染到同一个模板中,以便使用这两个功能!请帮我跟上正确的方向!
答案 0 :(得分:2)
如果你在问题中更清楚,那将是一件好事,因为我认为我并不完全明白你想要什么。但如果我这样做,这里有几个选择:
1)如果您可以将逻辑分成某些功能,请执行此操作。然后,您可以从第三个视图调用这些函数,获取模板参数并使用您想要的所有内容呈现模板
2)您也可以使用ajax在同一页面上单独加载这两个模板。
可能还有很多其他选择,这实际上取决于你最终想要得到什么(目前尚不清楚)。
答案 1 :(得分: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 %}