目標:リクエストパラメータに基づいてカスタムレンダラを使用する方法は?
を出力するのparamsで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
ありがとうございます。私のCSVRendererは既にこのライブラリからレンダラーを拡張していますが、同じ問題があります。これは基本的にurlパラメータに基づいて他のレンダラーを無視しています。 –
拡張レンダラを提供してください。 –
ええ、編集 –