[pyar] Errores customizados con django graphene
Diego Leonardo Puente
diegoduncan21 en gmail.com
Lun Jul 1 21:39:29 -03 2019
Buenas, opino igual que Daniel, hay dos tipos de errores, los fatales o de
sistema y los que son de validación.
Para los errores fatales se usa:
raise GraphQLError("Mensaje")
En cambio para validaciones uso un Type custom `ErrorType` y lo
devuelvo adentro de data, uso un form de django en una mutación y
valido si lo que me mandan es valido, si form.is_valid() es False,
armo una lista del tipo ErrorType iterando los errores del form
`form.errors.items()`. Un comportamiento similar a este se aplica
cuando usas DjangoFormMutation con django-graphene.
Una mutacion se veria algo asi:
class AddItemMutation(graphene.Mutation):
item = graphene.Field(ItemType)
status = graphene.String()
errors = graphene.List(ErrorType)
class Arguments:
category_id = graphene.ID(required=True)
price = graphene.Float()
name = graphene.String()
@permission_required('item.add_item')
def mutate(self, info, **kwargs):
form = AddItemForm(kwargs)
if form.is_valid():
item = Item.objects.create(**kwargs)
return AddItemMutation(status=STATUS_CREATED,
item=item,
errors=None)
errors = [ErrorType(argument=name, message=message[0]) for name, message in
form.errors.items()]
return AddItemMutation(status=STATUS_VALIDATION_FAILED, income=None, errors=
errors)
y el ErrorType asi:
class ErrorType(graphene.ObjectType):
message = graphene.String()
argument = graphene.String()
El lun., 1 jul. 2019 a las 19:47, Amilcar Benitez (<amilcarben en gmail.com>)
escribió:
>
> [...]pero si querés chequear de tu lado (backend) y eximir al front de eso
>> tendrías que hacer el parámetro opcional
>> y al evaluar que no cumple las especificaciones y lanzar un error
>> personalizado.
>>
>
> Buenísimo, gracias por la respuesta Daniel. Me dejaste mucho más claro las
> responsabilidades del backend y fronted.
> ¿Sugerís alguna lectura para los que estamos saliendo desde django con
> templates a la interacción con aplicaciones cliente totalmente
> independientes?
>
> --
> Amilcar Benitez
> _______________________________________________
> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
> Sitio web: http://www.python.org.ar/
>
> Para administrar la lista (o desuscribirse) entrar a
> http://listas.python.org.ar/listinfo/pyar
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20190701/c171a666/attachment-0001.html>
Más información sobre la lista de distribución pyar