【问题标题】:Django, displaying a view in an another view?Django,在另一个视图中显示一个视图?
【发布时间】:2010-12-21 07:38:28
【问题描述】:

我想知道我是否可以用 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)

输出看起来像我预期的那样,但我不得不用空字符串替换请求值。这很好还是有更好的方法来做到这一点?

【问题讨论】:

    标签: python django django-views


    【解决方案1】:

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

    【讨论】:

    • 是的,我想知道如何删除标题 ;-) 感谢您的解释
    猜你喜欢
    • 2019-11-10
    • 2021-09-01
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    相关资源
    最近更新 更多