5

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

1 に答える 1

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 %}
于 2009-11-29T00:33:45.060 に答える