Django, exibindo uma vista em um outro ponto de vista?
-
06-07-2019 - |
Pergunta
Eu gostaria de saber se eu posso exibir uma visão dentro de outro ponto de vista com Django.
Isto é o que eu tentei fazer:
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)
Os olhares saída gostar do que eu estava esperando, mas eu tive que substituir o valor pedido por uma cadeia vazia. É que bem ou há uma maneira melhor de fazer isso?
Solução
http resposta contém cabeçalhos junto com html, ou qualquer outra coisa, então você não pode simplesmente adicionar-las como strings.
Se você quiser modularizar sua função de visualização, em seguida, ter chamadas sub-procedimento de devolução cordas e então você pode fazê-lo da maneira que você propor
Provavelmente no seu caso seria melhor colocar um loop mostrando linhas para o modelo, então você não vai precisar do sub-view e do laço em sua janela principal.
def listEventsSummary(request):
listEventsSummary = Event.objects.all().order_by('-id')[:20]
return render_to_response('stuff.html',{'events':listEventsSummary})
e em stuff.html
{% for event in events %}
<p>{{event.date}} and whatever else...</p>
{% endfor %}