Django RESTE des Exceptions
J'ai actuellement un code pour un affichage basé sur la Django RESTE du Cadre.
Ive été en utilisant un client exception de la classe, mais, idéalement, je veux utiliser la fonction intégrée de Django RESTE des exceptions.
Du code ci-dessous je crois que ce n'est probablement pas la meilleure ou la plus propre façon d'utiliser le RESTE du Cadre des exceptions à son maximum.
Quiconque a tout de bons exemples où ils attrapent les problèmes et de les renvoyer à leur propre avec le RESTE construit dans les exceptions ?
class JSONResponse(HttpResponse):
def __init__(self, data, **kwargs):
content = JSONRenderer().render(data)
kwargs['content_type'] = 'application/json'
super(JSONResponse, self).__init__(content, **kwargs)
def queryInput(request):
try:
auth_token = session_id = getAuthHeader(request)
if not auth_token:
return JSONResponse({'detail' : "fail", "error" : "No X-Auth-Token Found", "data" : None}, status=500)
if request.method:
data = JSONParser().parse(request)
serializer = queryInputSerializer(data=data)
if request.method == 'POST':
if serializer.is_valid():
input= serializer.data["input"]
fetchData = MainRunner(input=input,auth_token=auth_token)
main_data = fetchData.main()
if main_data:
return JSONResponse({'detail' : "success", "error" : None, "data" : main_data}, status=201)
return JSONResponse({'detail' : "Unknown Error","error" : True, "data" : None}, status=500)
except Exception as e:
return JSONResponse({'error' : str(e)},status=500)
OriginalL'auteur felix001 | 2015-05-29
Vous devez vous connecter pour publier un commentaire.
Le Django REST framework fournit plusieurs construit dans les exceptions, dont la plupart sont des sous-classes de la DRF est
APIException
.Vous pouvez lever des exceptions dans votre point de vue comme vous le feriez normalement en Python:
Vous pouvez également créer votre propre personnalisé d'exception en héritant de
APIException
et réglagestatus_code
etdefault_detail
. Certaines construit en sont:ParseError
,AuthenticationFailed
,NotAuthenticated
,PermissionDenied
,NotFound
,NotAcceptable
,ValidationError
, etc.Ils seront alors converties en un
Response
par le RESTE du Cadre gestionnaire d'exception. Chaque exception est associé à un code d'état, qui est ajouté à laResponse
. Par défaut, le gestionnaire d'exception est mis à la construit dans le gestionnaire de:Mais vous pouvez le configurer à votre propre gestionnaire d'exception si vous voulez convertir les exceptions vous-même en changeant dans votre
settings.py
fichier:Et ensuite créer le gestionnaire personnalisé dans cet emplacement:
OriginalL'auteur EmptyFlash
Vous pouvez utiliser le construire dans DRF exception, il suffit d'importer et d'élever
Essayez de soulever APIException("cette erreur apparaît") ou PermissionDenied, ValidationError Pas sûr au sujet de ParserError
L'exception est converti en Réponse, voir ma réponse pour plus d'info
de rest_framework.les exceptions à l'importation *
OriginalL'auteur haki