gpt4 book ai didi

django - 如何在 DRF 可浏览 API 中禁用 "HTML"选项卡但保持 "Raw"选项卡可用

转载 作者:行者123 更新时间:2023-12-05 05:03:27 26 4
gpt4 key购买 nike

当使用更复杂的表示模式(例如嵌套对象和列表)时,Django REST Framework 中 Browsable API 的“HTML”形式大部分变得不可用。我如何才能在禁用它的同时仍然保持 Browsable API 的其余部分可用,包括使用其他“Raw”选项卡发布/PUT/PATCH 数据的能力?

最佳答案

没有看到这个文档,但是在源代码中:

    def get_rendered_html_form(self, data, view, method, request):
"""
Return a string representing a rendered HTML form, possibly bound to
either the input or output data.

In the absence of the View having an associated form then return None.
"""

https://github.com/encode/django-rest-framework/blob/3.9.x/rest_framework/renderers.py#L457-L463

不过,它并不像宣传的那样有效。在此处返回 None 将阻止呈现“HTML”选项卡,但它也会从页面顶部删除“DELETE”和“OPTIONS”按钮。要仅获得删除“HTML”选项卡的效果,覆盖 render_form_for_serializer 似乎可以解决问题:

class OnlyRawBrowsableAPIRenderer(BrowsableAPIRenderer):
def render_form_for_serializer(self, serializer):
return ""

在特定 View 上使用它:

class MyModelViewSet(ModelViewSet):
renderer_classes = [OnlyRawBrowsableAPIRenderer, JSONRenderer]
...

或使用 DEFAULT_RENDERER_CLASSES setting .

关于django - 如何在 DRF 可浏览 API 中禁用 "HTML"选项卡但保持 "Raw"选项卡可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61660983/

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