• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

568
Views
Django Rest Framework: cómo habilitar documentos swagger para vistas basadas en funciones

Revisé la documentación de Django REST Swagger 2.1.2 . Cuando probé con vistas basadas en clases, funcionó bien.

Pero no encontré ninguna referencia sobre cómo habilitar swagger para vistas basadas en funciones como se muestra a continuación:

 @api_view(['GET', 'POST']) def app_info(request): ... return response

La mayor parte de mi views.py está lleno de vistas basadas en funciones, al igual que arriba.

Cualquier ayuda sobre cómo habilitar el mismo será muy apreciada. ¡Gracias!

Estoy usando Django: 1.8; Django RESTO Swagger: 2.1.2; FRD: 3.6.2

about 3 years ago · Santiago Trujillo
3 answers
Answer question

0

Deberías poder usar el decorador @renderer_classes :

 from rest_framework_swagger import renderers from rest_framework.decorators import api_view, renderer_classes @api_view(['GET', 'POST']) @renderer_classes([renderers.OpenAPIRenderer, renderers.SwaggerUIRenderer]) def app_info(request): ... return response

Además, vale la pena mencionar que si no desea usar este decorador en cada vista, puede especificar DEFAULT_RENDERER_CLASSES en la configuración

EDITAR: Parece que está en los documentos después de todo. Consulte la parte inferior de esta página: https://django-rest-swagger.readthedocs.io/en/latest/schema/

about 3 years ago · Santiago Trujillo Report

0

no estoy familiarizado con swagger, pero puede intentar usar el decorador de esta manera:

 class TestView(View): @api_view(['GET', 'POST']) def get(self, request): ....

o

 from django.utils.decorators import method_decorator class TestView(View): @method_decorator(api_view(['GET', 'POST']) def get(self, request): ....

-------------------------------------------------- --------------------------

Lo siento, tal vez he entendido mal tu pregunta. de acuerdo con el documento, si desea habilitar swagger en la vista basada en clases. hay ejemplo:

 from rest_framework.permissions import AllowAny from rest_framework.response import Response from rest_framework.schemas import SchemaGenerator from rest_framework.views import APIView from rest_framework_swagger import renderers class SwaggerSchemaView(APIView): permission_classes = [AllowAny] renderer_classes = [ renderers.OpenAPIRenderer, renderers.SwaggerUIRenderer ] def get(self, request): generator = SchemaGenerator() schema = generator.get_schema(request=request) return Response(schema)

restframework usará estos dos renderer_classes para representar Json y UI.

about 3 years ago · Santiago Trujillo Report

0

Agrega lo siguiente en tus vistas.py

Importaciones

 from rest_framework.schemas import AutoSchema from rest_framework.compat import coreapi
 #creating custom class class CustomSampleSchema(AutoSchema): def __init__(self): super(CustomSampleSchema, self).__init__() def get_manual_fields(self, path, method): extra_fields = [ coreapi.Field('field1', required=True, location='form', description='', type='', example=''), coreapi.Field('field2', required=False, location='form', description='', type='', example=''), coreapi.Field('field3', required=False, location='form', description='', type='', example='') ] manual_fields = super().get_manual_fields(path, method) return manual_fields + extra_fields

Esta es la función para la que está escribiendo swagger doc.

 @api_view(['post']) @schema(CustomSampleSchema()) @csrf_exempt def func_name(request, param): """ Your function definition below """

Ejemplo de entrada json

 {"name": "['name1', ]", "places": "['place1', 'place2']", "key":"12345"}
about 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error