Вопрос

Я хотел бы знать, могу ли я отображать представление в другом представлении с помощью 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 %}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top