私はDjango REST Frameworkを使用してPDFドキュメントを生成するエンドポイントを作成しています。 PDFドキュメントには、特定のDepartment
に対応する情報があります。 PDFドキュメントをダウンロードし、ブラウザ内でドキュメントをプレビューできるようにするには、2つの機能が必要です。Django REST Framework - ListAPIViewのリストをオーバーライドできません
アプリケーションに追加されたデータに基づいてPDF文書が時間の経過とともに変更されるため、文書は要求時にリアルタイムで生成する必要があります。最初のステップとして、私は次のエンドポイントがGET
要求でヒットしたときに、ドキュメントがリモートファイルの保存場所に生成されていしようとしている:私のエンドポイントのみGET
要求を取る必要がありますので
departments/<department_pk>/result/preview
、私はListAPIView
を使用しています。 list
メソッドをオーバーライドしてカスタムドキュメント生成ロジックが実行されるようにしようとしていますが、メソッドが呼び出されないようです。エンドポイントがGET
リクエストによってヒットしたときに実行されるように、カスタムドキュメント生成ロジックをエンドポイントに挿入する方法を教えてください。
API/urls.py
url(r'^departments/(?P<department_pk>[0-9]+)/result/preview',
include(result_document_urls.result_document_preview_router.urls,
urls.py document_app/
result_document_preview_router = routers.DefaultRouter()
result_document_preview_router.register(r'^', ResultDocumentDetailView.as_view(),
base_name='Department')
views.py document_app/
class ResultDocumentDetailView(generics.ListAPIView):
queryset = Department.objects.all()
lookup_field = 'department_pk'
lookup_url_kwarg = 'department_pk'
def list(self, request, department_pk):
queryset = self.get_queryset()
import ipdb; ipdb.set_trace() # this break point is never hit
department = get_object_or_404(queryset, department_pk=department_pk)
...generate document logic...
return Response(status=status.HTTP_200_OK)
「RetrieveAPIView」を使用する必要があります。 'ListAPIView'はコレクションを返すためのものです。 'Retrieve ...'は一つのインスタンスを取得するためのものです。これは言われていますが、私はなぜ 'list'が呼び出されないのか分かりません。 – Louis
@louis yeah、私にも意味をなさない。私はもともと 'RetrieveAPIView'を使用していましたが、' RetrieveAPIView'のURLの最後に 'pk'が必要かどうか分からなかったので、' ListAPIView'に切り替えました。 – orange1