标签: django-swagger

如何在Django REST Swagger中生成响应消息列表?

我昨天将Django REST Framework升级到3.5.0,因为我需要很好的模式生成.

我正在使用Django REST Swagger来记录我的API,但不知道如何列出API端点提供的所有可能的响应消息.

似乎自动生成与我的端点正在执行的操作相对应的成功消息.

因此POST动作生成201响应代码,没有任何描述.

在此输入图像描述

我如何添加我的端点提供的所有响应消息并为其提供一些描述?

我在用

djangorestframework==3.5.0

django-rest-swagger==2.0.7

django rest django-rest-framework django-swagger

25
推荐指数
1
解决办法
4398
查看次数

Django休息API,自动化文档?

我尝试在编写视图集和使用django rest docs时记录API .我遇到以下问题:

  • 如果我尝试发送反向相关字段的值,它会获取值列表,但是当在Form-data中发送数据时,它会以字符串形式出现.

  • 文档UI中没有文件上传选项.

以下是我的代码:

models.py

class Area(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=100)
    address = models.TextField()
    image = models.ImageField(upload_to='area/')
    created_on = models.DateTimeField(auto_now_add=True)
    modified_on = models.DateTimeField(auto_now=True)
    zipcode = models.CharField(max_length=15, null=True)
    is_verified = models.BooleanField(default=False)

    class Meta:
        ordering = ('-modified_on',)



class Email(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    email = models.EmailField()
    area = models.ForeignKey(Area, on_delete=models.CASCADE, null=True, related_name='email')


class Phone(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    phone = models.CharField(max_length=15)
    area = models.ForeignKey(Area, on_delete=models.CASCADE, null=True, related_name='phone')
Run Code Online (Sandbox Code Playgroud)

view.py

class AreaViewSet(viewsets.ModelViewSet):
    """ …
Run Code Online (Sandbox Code Playgroud)

python django api-doc django-rest-framework django-swagger

23
推荐指数
1
解决办法
1270
查看次数

Django REST框架+ Django REST Swagger + ImageField

我创建了一个带有ImageField的简单模型,我想用django-rest-framework + django-rest-swagger创建一个api视图,该文档已记录并能够上传文件.

这是我得到的:

models.py

from django.utils import timezone
from django.db import models

class MyModel(models.Model):

    source = models.ImageField(upload_to=u'/photos')
    is_active = models.BooleanField(default=False)
    created_at = models.DateTimeField(default=timezone.now)

    def __unicode__(self):
        return u"photo {0}".format(self.source.url)
Run Code Online (Sandbox Code Playgroud)

serializer.py

from .models import MyModel

class MyModelSerializer(serializers.ModelSerializer):

    class Meta:
        model = MyModel
        fields = [
            'id',
            'source',
            'created_at',
        ]
Run Code Online (Sandbox Code Playgroud)

views.py

from rest_framework import generics
from .serializer import MyModelSerializer

class MyModelView(generics.CreateAPIView):
    serializer_class = MyModelSerializer
    parser_classes = (FileUploadParser, )

    def post(self, *args, **kwargs):
        """
            Create a MyModel
            ---
            parameters:
                - name: source
                  description: …
Run Code Online (Sandbox Code Playgroud)

python django swagger django-rest-framework django-swagger

19
推荐指数
2
解决办法
3552
查看次数

Django Rest Framework:如何为基于函数的视图启用swagger文档

我浏览了Django REST Swagger 2.1.2文档.当我尝试使用基于类的视图时,它工作正常.

但我没有找到任何关于如何为基于函数的视图启用swagger的参考,如下所示:

@api_view(['GET', 'POST'])
def app_info(request): 
    ...
    return response
Run Code Online (Sandbox Code Playgroud)

我的大多数views.py都充满了基于功能的视图,就像上面一样.

如何启用相同的任何帮助将非常感激.谢谢!

我正在使用Django:1.8; Django REST Swagger:2.1.2; DRF:3.6.2

python django swagger django-rest-framework django-swagger

17
推荐指数
1
解决办法
2215
查看次数

Django REST Swagger:如何在Swagger设置中使用安全部分?

我正在尝试为SecurityDefinition构建Swagger设置,以便在openapi.json中获得以下结果:

"securityDefinitions": {
  "password": {
    "type": "oauth2",
    "tokenUrl": "http://example.com/oauth/token",
    "flow": "password",
    "scopes": {
      "write": "allows modifying resources",
      "read": "allows reading resources"
    }
  }
},
"security": [{
  "password": ["read", "write"]
}]
Run Code Online (Sandbox Code Playgroud)

在我的settings.py中,我添加了以下swagger设置:

# Swagger settings
SWAGGER_SETTINGS = {
  "SECURITY_DEFINITIONS": {
    "password": {
        "type": "oauth2",
        "tokenUrl": "http://example.com/oauth/token",
        "flow": "password",
        "scopes": {
            "write": "allows modifying resources",
            "read": "allows reading resources"
        }
     }
  },
  "SECURITY": [{
    "password": ["read", "write"]
  }]
}
Run Code Online (Sandbox Code Playgroud)

问题是在Swagger生成的openapi.json中没有securitydict,我也不知道它是如何生成的.

下面,介绍了生成的openapi.json:

{
   "info": {
       "title": "Example Service API",
       "version": "" …
Run Code Online (Sandbox Code Playgroud)

python django swagger django-swagger

6
推荐指数
1
解决办法
696
查看次数

Django REST Swagger在哪里生成模式文件?

我想修改Django REST Swagger生成的Swagger文档.我想找到Django REST Swagger生成的API定义或模式文件.我一直无法找到这些文件.

当Django REST Swagger创建API文档时,是否会生成类似YAML或JSON文件的内容?

我在哪里可以在服务器上找到该文件?

谢谢!

django rest api-doc swagger django-swagger

6
推荐指数
1
解决办法
1014
查看次数

为什么Django Swagger不显示具有IsAuthenticated权限的url文档?

在我的api中,默认的permmision类为'rest_framework.permissions.IsAuthenticated',而django swagger不显示任何网址的文档。

我的REST_FRAMEWORK设置是:

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAuthenticated',),

    'DEFAULT_AUTHENTICATION_CLASSES': (
         'rest_framework.authentication.TokenAuthentication',
    )
}
Run Code Online (Sandbox Code Playgroud)

我的swagger_settings是:

SWAGGER_SETTINGS = {
    'USE_SESSION_AUTH': False,
    'SECURITY_DEFINITIONS': {
        'api_key': {
            'type': 'apiKey',
            'in': 'header',
            'name': 'Authorization'
        }
    },
Run Code Online (Sandbox Code Playgroud)

因此,如何在django swagger中显示经过身份验证的终结点。

django django-rest-framework django-swagger

6
推荐指数
1
解决办法
556
查看次数

嵌套URL未在Django Rest Swagger中显示

我正在尝试使用Django Rest Swagger记录我的Django REST API.

我的主要网址看起来像这样:

urlpatterns =[
    url(r'^tickers/', include('tickerapi.urls')),
]
Run Code Online (Sandbox Code Playgroud)

tickerapi/urls:

schema_view = get_swagger_view(title='Ticker API')

urlpatterns = [
    url(r'^docs/', schema_view),
    url(r'^(?P<channel_name>[-\w]+)/', include([
        url(r'^$', views.ChannelUpdateView.as_view(),name='channel_update'), 
        url(r'^ONAIR$', views.CarouselsOnAirContentList.as_view(),name='carousel_onair_content_list'),      
        url(r'^(?P<carousel_name>[-\w]+)$', views.CarouselUpdateView.as_view(), name='carousel_update'),
    ])),
]
Run Code Online (Sandbox Code Playgroud)

如您所见,我的网址是嵌套的,以便处理以下网址有不同的视图:

  • / tickers/{channel_name}(操作:PUT,PATCH)
  • / tickers/{channel_name}/ONAIR(操作:GET)
  • / tickers/{channel_name}/{carousel_name}(操作:GET,PUT,PATCH)

我的问题是Django Rest Swagger只显示部分嵌套网址,如下所示: Django Rest Swagger屏幕截图

据我所知,Django Rest Swagger正在考虑/ tickers/{channel_name}/ tickers/{channel_name}/{carousel_name}是同一个端点.实际上,如果我只允许对视图处理/ tickers/{channel_name}/{carousel_name}进行GET操作(使用ListAPIView),则丢失的嵌套URL将在Swagger中显示,减去GET操作:Django Rest Swagger屏幕截图

有人遇到过这个问题吗?我正在使用Django 1.10.5,Django Rest Framework 3.5.4和Django Rest Swagger 2.1.1

谢谢你的帮助

python django swagger django-rest-framework django-swagger

5
推荐指数
0
解决办法
403
查看次数

Django Swagger和JSON API呈现问题

使用django-rest-framework-json-api我能够创建API端点,如文档中所述.尝试使用API​​文档django-rest-swagger并不容易.

1:Swagger使用media_type = 'application/json'JSON API不支持的.为了解决这个问题,我创建了第二个渲染类(renderer_classes),它为JSON API提供子类JSONRenderer并强制使用媒体类型.

现在终点支持application/json并且application/vnd.api+jsonswagger很乐意在JSON API文档结构中呈现.意识到生成的curl请求没有标准的JSON API标头.

2:Swagger与解析器有同样的问题.虽然第1期的工作确实有效,但仍存在次要挑战.Swagger呈现字段名称的平面字典,该字典不是JSON API,最终由DRF请求.

是否有可能在JSON API中进行解析?目前,Swagger没有为PUT或POST工作.

djangorestframework-jsonapi==2.2.0
djangorestframework==3.5.4
Django==1.11.2
coreapi==2.3.1
python 3.6
Run Code Online (Sandbox Code Playgroud)

django django-swagger django-rest-swagger

5
推荐指数
1
解决办法
408
查看次数

如何记录基于函数的视图参数?

我正在使用 Django 1.11 和 Django REST Framework 3.7 开发 REST API。我安装了Django REST Swagger 2.1 来生成文档。

我正在使用这样的基于函数的视图:

from rest_framework.decorators import api_view, permission_classes

@api_view(['POST'])
@permission_classes((permissions.AllowAny,))
def jwt_auth(request, provider, format=None):
    """
    View description here
    """
    pass
Run Code Online (Sandbox Code Playgroud)

Swagger 生成的文档

如您所见,我的视图被 Swagger 识别,并且具有正确的描述:“在此处查看描述”。

然而:

  • 您可以看到URL 参数的“说明”列为空provider
  • POST 参数没有记录(显然,因为 Swagger 无法知道它们)

如何为基于函数的视图的 URL 和 POST 参数以及响应编写文档?

我尝试了YAML Docstrings,但它似乎适用于旧版本 (0.3.x),并且不适用于 2.x 版。

django python-3.x swagger django-rest-framework django-swagger

5
推荐指数
1
解决办法
2407
查看次数

Django OAuth 工具包和 Django Rest Swagger 集成

我正在使用OAuthToolkit和 DjangoRestSwagger。我已经使用 Django Admin 创建了一个应用程序,现在我已经client_idclient_secret.

我想使用client_idand生成令牌client_secret。目前,我curl用来生成令牌。

curl -X POST -d "grant_type=client_credentials" -u"client_id:client_secret" http://localhost:8000/o/token/
Run Code Online (Sandbox Code Playgroud)

我如何使用 Swagger 文档来做到这一点?基本上,如何将第三方(OAuthToolkit)API URL 与 Swagger 集成?

目前,我有一个Authorize接受api_key价值的按钮,即令牌。

这是我的 Swagger 设置。

SWAGGER_SETTINGS = {
    'SECURITY_DEFINITIONS': {
        'token': {
            'type': 'apiKey',
            'name': 'AUTHORIZATION',
            'in': 'header',
        }
    },
}
Run Code Online (Sandbox Code Playgroud)

python django swagger oauth2-toolkit django-swagger

5
推荐指数
1
解决办法
370
查看次数