gpt4 book ai didi

django - 我可以禁用 Rest Framework API 浏览 View 中的字段吗

转载 作者:行者123 更新时间:2023-12-04 14:45:02 26 4
gpt4 key购买 nike

我正在使用 Django Rest Framework 来序列化我有外键的模型。

模型.py

class Article(models.Model):
author = models.ForeignKey(Author, related_name='articles')
... other fields...

序列化程序.py
class ArticleSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Article

我想去掉可浏览 API View 底部的“HTML 表单”,因为我得到了所有文章的列表,并从数据库中检索它们需要很长时间(我有大约 10 万篇文章,每次 html 表单都是显示,我的服务器执行 10 万次查询)。

我已经阅读了来自 How to disable admin-style browsable interface of django-rest-framework? 的答案我目前正在以 JSON 格式显示 View 。但是,我喜欢 html View ,并希望找到一种方法来避免底部可用的 html 表单。

我不想从 View 中正确删除该字段(我需要使用它),而只是删除用于填充表单的数据库查询。

任何的想法 ?

最佳答案

将该字段设为只读还意味着您无法修改它,这可能不是在所有情况下都需要的。

另一种解决方案是覆盖 BrowsableApiRenderer所以它不会显示 HTML 表单(对于大量数据,这确实很慢)。

这非常简单,只需覆盖 get_rendered_html_form :

from rest_framework.renderers import BrowsableAPIRenderer


class NoHTMLFormBrowsableAPIRenderer(BrowsableAPIRenderer):

def get_rendered_html_form(self, *args, **kwargs):
"""
We don't want the HTML forms to be rendered because it can be
really slow with large datasets
"""
return ""

然后调整您的设置以使用此渲染器:
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
'myapp.renderers.NoHTMLFormBrowsableAPIRenderer',
)
}

关于django - 我可以禁用 Rest Framework API 浏览 View 中的字段吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23062814/

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