将 Swagger 与 Django Rest Framework 一起使用,我可以在不同字段而不是一个正文中看到 POST 参数吗
Posted
技术标签:
【中文标题】将 Swagger 与 Django Rest Framework 一起使用,我可以在不同字段而不是一个正文中看到 POST 参数吗【英文标题】:Using Swagger with Django Rest Framework, can I see POST parameters in different fields instead of one body 【发布时间】:2020-06-17 01:04:27 【问题描述】:我实际上是使用 Django Rest 框架在 Django 网站上创建 API。 我正在尝试使用 Swagger 记录它们。
我正在使用 Django 2.1、django-rest-swagger 2.2 和 djangorestframework 3.11
除了某些东西之外,一切都几乎按预期工作:
让我解释一下:
我有这个模型(models.py)
class Technology(models.Model):
"""
This model defines the different technologies
"""
name = models.CharField(max_length=CHAR_SHORT)
path = models.CharField(max_length=CHAR_SHORT, validators=[validate_tech_path], help_text='this is only used to construct the url')
image = models.ImageField()
mailer = models.EmailField(blank=True)
external = models.BooleanField(default=False)
internal = models.BooleanField(default=False)
class Meta:
verbose_name_plural = "technologies"
ordering = ['name']
def __str__(self):
return self.name
然后我就有了对应的序列化器类(serializer.py):
class TechnologySerializer(serializers.ModelSerializer):
"""
This model defines the different technologies
"""
class Meta:
model = Technology
fields = ('id', 'name', 'path', 'image', 'mailer', 'external', 'internal')
最后我对生成的 API (views.py) 有了自己的看法:
class TechnologyViewSet(viewsets.ModelViewSet):
queryset = Technology.objects.all()
serializer_class = TechnologySerializer
http_method_names = ['get','post','delete','put']
结果如下:
Api description 1 Api description 2
如上图所示,参数不是json体。
是否可以为所有参数设置类似的内容:
API parameter wanted 非常感谢。
【问题讨论】:
【参考方案1】:尝试使用ListCreateAPIView
而不是modelviewset
,您将能够看到您的帖子https://www.django-rest-framework.org/api-guide/generic-views/#listcreateapiview。
from rest_framework.generics import ListCreateAPIView
class TechnologyViewSet(ListCreateAPIView):
queryset = Technology.objects.all()
serializer_class = TechnologySerializer
希望对您有所帮助。
【讨论】:
嗨 Rohit,首先,感谢您的回答。我已经尝试过你提到的但得到了这个错误:AttributeError: 'TechnologyViewSet' object has no attribute 'get_extra_actions'以上是关于将 Swagger 与 Django Rest Framework 一起使用,我可以在不同字段而不是一个正文中看到 POST 参数吗的主要内容,如果未能解决你的问题,请参考以下文章
django-rest-swagger 是不是不适用于模型序列化器?