在get_data(request)中渲染多个模板

时间:2018-09-07 04:49:20

标签: python django

如何将数据呈现到get_data()中的两个模板上?

通常

def get_data(request):
    data = Model.objects.order_by('id')
    return render(request, 'template.html', {'data':data})

{{for x in data}}
           {{x.model_field}}
    {{end for}}

用于将存储的数据从db呈现到html文件中,但是如何将相同的数据呈现到'template.html''template_1.html'中。 据django_docs所知,无法将模板作为列表传递给我。有其他替代方法吗?

1 个答案:

答案 0 :(得分:0)

#views.py

from django.views.generic import DetailView
from my_app.models import MyModel, MyModel2

class MyView(DetailView):
    context_object_name = 'my_object'
    template_name = 'templates/model.html'

    def get_object(self, queryset=None):
        pk = self.kwargs['pk']
        return MyModel.objects.get(pk=pk)


class MyView2(DetailView):
    context_object_name = 'my_object'
    template_name = 'templates/model2.html'

    def get_object(self, queryset=None):
        pk = self.kwargs['pk']
        return MyModel2.objects.get(pk=pk)


# urls.py

from django.urls import re_path
from my_app.views import MyView, MyView2

urlpatterns = [
    re_path(r'^model/(?P<pk>[0-9]+)$', MyView.as_view()),
    re_path(r'^model2/(?P<pk>[0-9]+)$', MyView2.as_view()),
]

这是一个非常基本的示例,/model/15/templates/model/与具有pk 15的MyModel对象一起渲染。

在模板中,您可以使用{{ my_object }}来获取对象

您不了解的任何内容,随时发表评论。