我昨天将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 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) 我创建了一个带有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) 我浏览了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
我正在尝试为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) 我想修改Django REST Swagger生成的Swagger文档.我想找到Django REST Swagger生成的API定义或模式文件.我一直无法找到这些文件.
当Django REST Swagger创建API文档时,是否会生成类似YAML或JSON文件的内容?
我在哪里可以在服务器上找到该文件?
谢谢!
在我的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 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)
如您所见,我的网址是嵌套的,以便处理以下网址有不同的视图:
我的问题是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
谢谢你的帮助
使用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 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 识别,并且具有正确的描述:“在此处查看描述”。
然而:
provider。如何为基于函数的视图的 URL 和 POST 参数以及响应编写文档?
我尝试了YAML Docstrings,但它似乎适用于旧版本 (0.3.x),并且不适用于 2.x 版。
django python-3.x swagger django-rest-framework django-swagger
我正在使用OAuthToolkit和 DjangoRestSwagger。我已经使用 Django Admin 创建了一个应用程序,现在我已经client_id和client_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)