2011-05-21 13 views
3

Je reçois des notifications à chaque fois, lorsque vous entrez une adresse qui n'existe pas.Erreur django (IP EXTERNE)

retraçage (appel le plus récent en dernier): Fichier "/home/user/opt/local/django/core/handlers/base.py", ligne 100, dans GET_RESPONSE fichier «/web/blog/views.py ", ligne 33, dans la publication Fichier" /home/user/local/django/db/models/manager.py ", ligne 132, dans get Fichier"/home/user/opt/local/django/db/models/query.py ", ligne 347, dans get DoesNotExist: la requête de correspondance ne existe pas.

comment résoudre

Répondre

6

Modifiez votre requête pour utiliser get_object_or_404 ou attraper l'exception YourModel.DoesNotExist (3e paragraphe) lorsque vous effectuez la recherche et déclencher une exception Http404. Lorsque vous n'attrapez pas l'exception DoesNotExist, la vue génère une erreur 500. Comme un effet secondaire, cela envoie un e-mail d'exception à la ADMINS défini settings.py.

Exemple de deux cas:

from django.shortcuts import get_object_or_404 

post_id = 1 
post = get_object_or_404(Post, id=post_id) 

# or catch the exception and do something with it 

from django.http import Http404 
try: 
    post = Post.objects.get(id=post_id) 
except Post.DoesNotExist: 
    # id doesnt exist... do extra things here 
    raise Http404 
0

Je pense que le principal problème est dans votre fichier de vue, où vous travaillez avec l'objet de demande de réponse http .Vérifier que tous les paramètres sont exacts dans settings.py, utilisez également essayer sauf le bloc pour trouver l'erreur plus précisément.

1

L'erreur a été générée parce que votre requête get n'avait pas aucune notice. Si vous voulez lancer une page 404 dans un tel cas, alors sdolan vous a déjà fourni des conseils sur la façon de procéder. Toutefois, si vous souhaitez supposer des valeurs par défaut raisonnables dans le cas où la requête ne parvient pas à extraire les enregistrements correspondants, vous pouvez renvoyer l'appel à get autour d'un bloc try et catch. Par exemple:

try: 
    post = Post.object.get(pk=id) 
except Post.DoesNotExist: 
    post = None 
    # Probably use some sensible defaults, or do something else