【发布时间】:2017-12-12 21:37:14
【问题描述】:
目标:
让每个端点在参数中使用export=csv,通过使用自定义渲染器而不是更改每个视图的代码来输出 CSV 文件而不是 Json 数据
设置另一个渲染器似乎是最简单的解决方案:
class MyView(ListAPIView):
renderer_classes = (BrowsableAPIRenderer, CSVRenderer)
pagination_class = StandardPagination
serializer_class = MySerializer
...
在CSVRenderer 上检查url 是否包含export=csv,但这会产生CSV 格式的纯文本数据,而不是文件。删除BrowsableAPIRenderer 会起作用,但我仍然需要让端点在没有export=csv 的情况下工作。
有没有办法在调用渲染器之前检查 url?
如果有更好的方法来实现这一点,欢迎提出建议。
编辑:我的渲染器是来自 djangorestframework 的 CSVRenderer:
from rest_framework_csv import renderers as r
class CSVRenderer(r.CSVRenderer):
pass
Edit2:StandardPagination 只是一个rest_framework.pagination.PageNumberPagination
【问题讨论】:
标签: django csv django-rest-framework django-views