2009-11-29 77 views
5

我想知道如果我可以在django的另一个视图内显示视图。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) 

输出看起来像我所期待的,但我曾与一个空字符串替换请求值。这是好的还是有更好的方法来做到这一点?

回答

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 %} 
+0

是啊,我想知道如何删除页眉;-) 感谢交代 – Roch 2009-11-29 00:44:47

相关问题