Eti*_*gné 34 django django-rest-framework
我有使用Django Rest框架(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
Run Code Online (Sandbox Code Playgroud)
此视图允许我通过指定format = json或html从同一端点获取JSON数据或HTML表单.
我想以编程方式调用该视图以从另一个视图中获取呈现的HTML表单,以便将此表单包含在将包含更多内容的另一个页面中.
use*_*ser 28
我在文档中找到了解决方案... https://docs.djangoproject.com/en/1.7/topics/class-based-views/mixins/
提示来自他们的例子:
class AuthorDetail(View):
def get(self, request, *args, **kwargs):
view = AuthorDisplay.as_view()
return view(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
view = AuthorInterest.as_view()
return view(request, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
Eti*_*gné 21
html_from_view = ExampleDetail.as_view({'get': 'list'})(request).content
Run Code Online (Sandbox Code Playgroud)
要么
html_from_view = ExampleDetail.as_view({'get': 'retrieve'})(request, pk=my_id).render().content
Run Code Online (Sandbox Code Playgroud)
JD *_*nki 13
从 Django 2.2 和 DRF 3.9.2 开始,我可以使用以下代码获得响应。
response = UserItemsApiView.as_view()(request=request._request).data
Run Code Online (Sandbox Code Playgroud)
上面的例子解决了以下问题:
request参数必须是实例django.http.HttpRequest,不rest_framework.request.Requestcontent,使用data属性从该视图中给了我结果。| 归档时间: |
|
| 查看次数: |
16082 次 |
| 最近记录: |