如何在另一个视图中编程调用Django Rest Framework视图? [英] How to programatically call a Django Rest Framework view within another view?

查看:235
本文介绍了如何在另一个视图中编程调用Django Rest Framework视图?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  class ExampleDetail(generics.RetrieveUpdateDestroyAPIView)我使用Django Rest框架(DRF)构建了以下基于类的基于视图的视图:
queryset = Example.objects.all()
serializer_class = ExampleSerializer
renderer_classes =(JSONRenderer,TemplateHTMLRenderer)

def get(self,request,* args, ** kwargs)

response = self.retrieve(request,* args,** kwargs)
if request.accepted_renderer.format =='html':
form = ExampleForm(data = response.data)
return Response({'data':response.data,'form':form},template_name ='example.html')

return response

此视图允许我通过指定format = json从同一个端点获取JSON数据或HTML表单或html。



我想以编程方式调用该视图以从机智中获取呈现的HTML表单另一个视图,以便将此表单包含在另一个页面中,其中将包含更多内容...



我该怎么做?

解决方案

  html_from_view = ExampleDetail.as_view({'get':'list'})(request).content 

  html_from_view = ExampleDetail.as_view({'get':'retrieve'})(request,pk = my_id).render()。content 


I have the following generic class based views built with Django Rest framework (DRF)

class ExampleDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Example.objects.all()
    serializer_class = ExampleSerializer
    renderer_classes = (JSONRenderer, TemplateHTMLRenderer)

    def get(self, request, *args, **kwargs):

        response = self.retrieve(request, *args, **kwargs)
        if request.accepted_renderer.format == 'html':
            form = ExampleForm(data=response.data)
            return Response({'data': response.data, 'form': form}, template_name='example.html')

        return response

This view allow me to obtain both JSON data or HTML form from the same endpoint by specifying the format=json or html.

I would like to programatically call that view to obtain the rendered HTML form from within another view in order to include this form in another page that will include more stuff...

How can I do that?

解决方案

html_from_view = ExampleDetail.as_view({'get': 'list'})(request).content

OR

html_from_view = ExampleDetail.as_view({'get': 'retrieve'})(request, pk=my_id).render().content

这篇关于如何在另一个视图中编程调用Django Rest Framework视图?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆