Django,在另一个视图中显示视图?

时间:2009-11-29 00:27:17

标签: python django django-views

我想知道是否可以使用django在另一个视图中显示视图。

这就是我试图做的事情:

def displayRow(request, row_id):
    row = Event.objects.get(pk=row_id)
    return render_to_response('row.html', {'row': row})

def listEventsSummary(request):
    listEventsSummary = Event.objects.all().order_by('-id')[:20]
    response = ''
    for event in listEventsSummary:
        response += str(displayRow('',event.id))
    return HttpResponse(response)

输出看起来像我期待的但我不得不用空字符串替换请求值。那没关系,或者有更好的方法吗?

1 个答案:

答案 0 :(得分:4)

http响应包含标题以及html或其他任何内容,因此您不能像字符串一样添加它们。

如果你想模块化你的视图函数,那么让子过程调用返回字符串,然后你就可以按照你提出的方式进行操作

可能在你的情况下,最好将一个显示行的循环放入模板中,然后在主视图中不需要子视图和循环。

def listEventsSummary(request):
    listEventsSummary = Event.objects.all().order_by('-id')[:20]
    return render_to_response('stuff.html',{'events':listEventsSummary})

和stuff.html

{% for event in events %}
    <p>{{event.date}} and whatever else...</p>
{% endfor %}