Nuestro grupo de especialistas pasados varios días de trabajo y recopilar de datos, hallamos la solución, queremos que te sea de utilidad para tu trabajo.
Solución:
nueva arrogancia
from rest_framework.filters import BaseFilterBackend
import coreapi
class SimpleFilterBackend(BaseFilterBackend):
def get_schema_fields(self, view):
return [coreapi.Field(
name='query',
location='query',
required=False,
type='string'
)]
class MyViewSet(viewsets.ViewSet):
filter_backends = (SimpleFilterBackend,)
def list(self, request, *args, **kwargs):
# print(request.GET.get('query')) # Use the query param in your view
return Response('hello': 'world', status.HTTP_200_OK)
De acuerdo, para aquellos que tropiezan con esta pregunta, lo he resuelto. Es bastante tonto, y me siento un poco estúpido por no saberlo, pero en mi defensa, no estaba claramente documentado. La información no se encontró en la documentación de DRF ni dentro del repositorio Django REST Swagger. En su lugar, se encontró en django-rest-framework-docs, que es de lo que se basa Django REST Swagger.
Para especificar su parámetro de consulta para que aparezca en su SwaggerUI como un campo de formulario, simplemente comente así:
def list(self):
"""
param1 -- A first parameter
param2 -- A second parameter
"""
...
Y swagger analizará sus comentarios y colocará una entrada de formulario para param1 y param2. Que sigue --
son las descripciones de los parámetros.
Encontré el resto de los documentos de Swagger Framework. para que podamos escribir el tipo de parámetro (entero, carácter), respuesta, etc.
el triple ---
es necesario.
@api_view(["POST"])
def foo_view(request):
"""
Your docs
---
# YAML (must be separated by `---`)
type:
name:
required: true
type: string
url:
required: false
type: url
created_at:
required: true
type: string
format: date-time
serializer: .serializers.FooSerializer
omit_serializer: false
parameters_strategy: merge
omit_parameters:
- path
parameters:
- name: name
description: Foobar long description goes here
required: true
type: string
paramType: form
- name: other_foo
paramType: query
- name: other_bar
paramType: query
- name: avatar
type: file
responseMessages:
- code: 401
message: Not authenticated
"""
¿Qué tal la situación en la que usamos la clase mixins como ModelViewSets
. ¿Necesitamos definir el list
función solo para agregar los documentos? — No
Podemos hacer así:
class ArticleViewSet(viewsets.ModelViewSet):
"""
Articles.
---
list: #<--- here!!
parameters:
- name: name
description: article title
get_price:
omit_serializer: true
"""
@list_route(methods=['get'])
def get_price(self, request):
pass
Si sostienes algún recelo y disposición de arreglar nuestro tutorial eres capaz de dejar un exégesis y con mucho placer lo ojearemos.