首页 > 解决方案 > 在 get_data(request) 中渲染多个模板

问题描述

如何将数据呈现到两个模板中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读取的知识。有什么替代方法吗?

标签: pythondjango

解决方案


#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()),
]

这是一个非常基本的示例,将使用具有 pk 15 的对象进行/model/15/渲染。templates/model/MyModel

在模板中你可以{{ my_object }}用来获取对象

有什么不明白的,欢迎评论。


推荐阅读