2010-08-19 18 views
3

Je crée une API où une URL est envoyée au serveur. Je veux obtenir le nom d'utilisateur, etc. de l'URL. J'utiliser le code suivant pour le faire:Un bon moyen d'attraper KeyError dans Django?

try: 
    username = request.REQUEST['username'] 
    message = request.REQUEST['message'] 
    time = request.REQUEST['time'] 

except KeyError: 
    ... 

Cependant, il y a des moments où l'URL ne dispose pas d'un nom d'utilisateur, un message, le temps, etc. en elle. Dans ce cas, une erreur KeyError est déclenchée. Je veux être en mesure d'attraper ceci et savoir quel paramètre était manquant afin que je puisse émettre un code de réponse d'erreur qui indique à l'utilisateur quel paramètre était manquant. Dans la zone d'exception, existe-t-il un moyen de déterminer où le code a échoué?

Répondre

1

Pas proprement. Utilisez une valeur par défaut de None et effectuez un test après.

try: 
    username = request.REQUEST.get('username', None) 
    ... 
except ...: 
    ... 
else: 
    if username is None: 
    ... 
1

cela ne fonctionnerait-il pas? Pas besoin d'exceptions

if 'username' in request.REQUEST: 
    username = request.REQUEST['username'] 
else: 
    #username not found 
+0

Que diriez-vous de l'objet orienté? – User