简体   繁体   English

Django rest swagger post参数未在Swagger文档上显示

[英]Django rest swagger post parameter not getting displayed on Swagger docs

I have integrated swagger with django rest framework, but the swagger docs does not create a input box to post data for post request. 我已经将swagger与django rest框架集成在一起,但是swagger docs没有创建输入框来发布用于发布请求的数据。

My settings for parser, 我的解析器设置

REST_FRAMEWORK = {
'DEFAULT_PARSER_CLASSES': (
    'rest_framework.parsers.JSONParser',
    'rest_framework.parsers.FormParser',
    'rest_framework.parsers.MultiPartParser',
),

} }

Here is my view class snippet,` 这是我的视听片段,

class TeamViewList(APIView, BaseView):
"""
    Class based view to handle all operations related to Team Model
"""
logger = logging.getLogger(__name__)

def get_serializer(self):
    return serializers.TeamSerializer

def post(self, request):
    """
    To create a new  team
    """
    try:

urlmapping: 网址映射:

urlpatterns = [
url(r'^role/$', rest_views.UserTeamRoleView.as_view(), name='user_team_role'),
url(r'^teams/$', rest_views.TeamViewList.as_view(), name='team_list'),
url(r'^teams/(?P<name>[_a-zA-Z0-9\-]+)$', rest_views.TeamViewDetail.as_view(), name='team_detail'),

] ]

And my swagger doc generates, 我的招摇的文档生成了 在此处输入图片说明

There is no way to pass the json payload as input to post request. 没有办法将json负载作为输入传递到发布请求。

You must choose a PARSER for your view or add DEFAULT_PARSER_CLASSES to your DRF settings to see form or json object on Swagger. 您必须为视图选择一个PARSER或将DEFAULT_PARSER_CLASSES添加到DRF设置中才能在Swagger上查看表单或json对象。

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
    'DEFAULT_FILTER_BACKENDS': (
        'rest_framework.filters.SearchFilter',
        'rest_framework.filters.OrderingFilter',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'helpers.authentication.TokenAuthentication',
    ),
    'DEFAULT_MODEL_SERIALIZER_CLASS': (
        'rest_framework.serializers.ModelSerializer',
    ),
    'DEFAULT_PARSER_CLASSES': (
        'rest_framework.parsers.JSONParser',
        'rest_framework.parsers.FormParser',
        'rest_framework.parsers.MultiPartParser',
    ),
}

The following method should return an instance not a class: 以下方法应返回实例而不是类:

def get_serializer(self): return serializers.TeamSerializer

BTW, it was failing for me on DRF 3.6.2 even using an instance instead of a class. 顺便说一句,在DRF 3.6.2上我失败了,即使使用实例而不是类也是如此。 However, it looks like has been fixed here 但是,它似乎已在此处修复

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM