Django、ビューを別のビューに表示しますか?
-
06-07-2019 - |
質問
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)
出力は私が期待していたように見えますが、リクエスト値を空の文字列に置き換える必要がありました。それでいいですか、それを行うより良い方法がありますか?
解決
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 %}
所属していません StackOverflow