San*_*idi 5 django django-rest-framework
我正在开发一个我必须展示的网站
1)具有html内容类型的网页
2)还提供api json端点来开发Web或移动应用程序.
目前,对于html网页,我使用了djangos视图和表单.
而对于api我使用Django休息框架视图和序列化器.
但经过DRF后,我发现DRF可以呈现多种格式.
HTML和Forms REST框架适用于返回API样式响应和常规HTML页面.此外,序列化程序可用作HTML表单并在模板中呈现.
http://www.django-rest-framework.org/topics/html-and-forms/
您可以使用TemplateHTMLRenderer使用REST框架返回常规HTML页面,或者从单个端点返回HTML和API响应.
http://www.django-rest-framework.org/api-guide/renderers/#templatehtmlrenderer
由于有一个视图(一个端点),我可以同时获得html和api,这不会减少我的编码工作量.
我打算只使用DRF视图和searializers而不是DJango表单和任何类型的内容的视图.
如果我只使用DRF会有什么挫折.
没有Django就不能使用DRF,因为DRF不是自治框架.
因此,为了使用DRF,您将基于Django应用程序.因此,使用Django视图的选项取决于您和您想要解决的问题.
通常,仅使用DRF视图和序列化程序没有任何缺点,但正如我所提到的,这取决于手头的问题.列举了为何使用DRF的原因的一些主题可以在这里和这里找到.
最后,DRF为您提供了使用"情境"渲染器和选项的选项request.accepted_renderer(例如,直接来自文档):
在某些情况下,您可能希望视图使用不同的序列化样式,具体取决于接受的媒体类型.如果需要这样做,可以访问request.accepted_renderer以确定将用于响应的协商渲染器.
例如:
Run Code Online (Sandbox Code Playgroud)@api_view(('GET',)) @renderer_classes((TemplateHTMLRenderer, JSONRenderer)) def list_users(request): """ A view that can return JSON or HTML representations of the users in the system. """ queryset = Users.objects.filter(active=True) if request.accepted_renderer.format == 'html': # TemplateHTMLRenderer takes a context dict, # and additionally requires a 'template_name'. # It does not require serialization. data = {'users': queryset} return Response(data, template_name='list_users.html') # JSONRenderer requires serialized data as normal. serializer = UserSerializer(instance=queryset) data = serializer.data return Response(data)
它涵盖了你问题的第二部分.
| 归档时间: |
|
| 查看次数: |
1170 次 |
| 最近记录: |