0

Ich habe Prahlerei mit Django Rest Framework integriert, aber die Swagger Docs erstellt kein Eingabefeld zum Posten von Daten für Post-Anfrage.Django Rest Swagger Beitrag Parameter nicht auf Swagger Docs

Meine Einstellungen für Parser,

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

}

Hier ist Snippet meiner Ansicht Klasse, `

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'), 

]

Und meine Prahlerei doc erzeugt, enter image description here

Es gibt keine Möglichkeit, die json Nutzlast als Eingabe passiert Anfrage zu senden.

Antwort

1

Sie müssen eine PARSER für Ihre Ansicht auswählen oder zu Ihren DRF-Einstellungen hinzufügen, um das Formular oder Json-Objekt auf Swagger anzuzeigen.

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', 
    ), 
} 
+0

habe ich schon, dass in meiner Einstellungsdatei, REST_FRAMEWORK = { 'DEFAULT_PARSER_CLASSES': ( 'rest_framework.parsers.JSONParser', 'rest_framework.parsers.FormParser', ‚rest_framework.parsers .MultiPartParser ', ), } – Jenish

+0

Ich habe herausgefunden, dass django-rest-swagger nur für Viewset und nicht für APIView funktioniert. Ist das korrekt? – Jenish

+0

Es funktionierte nicht für mich selbst mit 'viewsets.ViewSet' – bsnux

0

Das folgende Verfahren sollte eine Instanz keine Klasse zurückgeben:

def get_serializer(self): return serializers.TeamSerializer

BTW, war es für mich auf DRF andernfalls 3.6.2 sogar eine Instanz statt einer Klasse. Allerdings sieht es aus wie has been fixed here

+0

Das ist kein Problem. swagger docs verstehen die Methode get_serializer nur dann, wenn die View-Klasse ViewSet oder GenericViewset erweitert. Aber in meinem Fall benutze ich APIView. Es gibt keine Unterstützung für APIview von Swagger. – Jenish

+0

Ich glaube nicht. Ich benutze 'APIView' und es ruft' get_serializer() 'Methode – bsnux

+0

Könnten Sie bitte ein funktionierendes Beispiel mit APIView veröffentlichen. Das wäre hilfreich für viele – Jenish

Verwandte Themen