DRF中的Format选项是什么意思?

4

我第一次使用DRF,想知道网站上以下代码片段中的“format”是什么意思:

class CommentList(APIView):
    def get(self, request, format=None):
        # do stuff...

    def post(self, request, format=None):
        # do stuff...

我阅读了文档,但仍不确定它如何工作。有人能用一个例子来解释一下吗?谢谢

2个回答

3
例如,
假设有一个名为APIView的类,其代码如下:
class HelloAPIView(APIView):
    def get(self, request, format):
        # do stuff...

    def post(self, request, format):
        # do stuff...

HelloAPIView的端点URL为:


http://example.com/api/users


现在,如果您希望响应中的数据以json格式呈现,则访问的URL将如下所示。

http://example.com/api/users.json


当您访问上述网址时,"json"这个值将作为第三个参数(第一个是self,第二个是request,第三个是format)传递给HelloAPIView的get()或post()方法。因此,format参数基本上用于定义您希望以哪种格式获得响应。有关更多详细信息,请参阅。
  1. https://www.django-rest-framework.org/api-guide/format-suffixes/
  2. https://www.django-rest-framework.org/tutorial/2-requests-and-responses/#adding-optional-format-suffixes-to-our-urls

0

在DRF中添加格式以处理多种内容类型

使用格式后缀可以为我们提供明确引用给定格式的URL,并且意味着我们的API将能够处理诸如以下URL:

http://localhost/api/items/4.json

在API的URLconf中为每个条目添加格式后缀模式容易出错且不符合DRY原则,因此REST框架提供了一种快捷方式来将这些模式添加到您的URLConf中。

有关更多详细信息,请参见this


谢谢您的文章,我还有点困惑。urlpatterns = format_suffix_patterns(urlpatterns, allowed=['json', 'html']) 这个是怎么运作的呢? - AKJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接