gpt4 book ai didi

python - Django REST Framework - 无法覆盖 ListAPIView 中的列表

转载 作者:太空宇宙 更新时间:2023-11-04 00:49:14 24 4
gpt4 key购买 nike

我正在使用 Django REST Framework 创建一个将生成 PDF 文档的端点。 PDF 文档将包含与特定 Department 相对应的信息.我有两个所需的功能——能够下载 PDF 文档,以及能够在浏览器中预览文档。

由于 PDF 文档会根据添加到应用程序的数据随时间变化,因此需要在请求时实时生成文档。作为第一步,当以下端点被 GET 击中时,我试图在远程文件存储位置生成文档。要求:

departments/<department_pk>/result/preview

因为我的端点应该只接受 GET请求,我正在使用 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,

document_app/urls.py

result_document_preview_router = routers.DefaultRouter()

result_document_preview_router.register(r'^', ResultDocumentDetailView.as_view(),
base_name='Department')

document_app/views.py

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)

最佳答案

用下面的代码替换列表方法,我认为它会起作用

class ResultDocumentDetailView(generics.ListAPIView):

queryset = Department.objects.all()
lookup_field = 'department_pk'
lookup_url_kwarg = 'department_pk'

def list(self, request, *args, **kwargs):
queryset = self.get_queryset()
import ipdb; ipdb.set_trace() # this break point is never hit
department = get_object_or_404(
queryset, department_pk=kwargs.get('department_pk')
)

...generate document logic...

return Response(status=status.HTTP_200_OK)

有关更多引用,请参阅覆盖方法“list”

https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/mixins.py#L35

关于python - Django REST Framework - 无法覆盖 ListAPIView 中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37879675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com