2011-05-21 56 views
3

当我输入一个不存在的地址时,我每次都收到通知。django错误(外部IP)

回溯(最近通话最后一个): 文件 “/home/user/opt/local/django/core/handlers/base.py”,线路100,在get_response 文件“/网站/博客/文件“/ home/user/opt/local/django /中的文件”/home/user/local/django/db/models/manager.py“,第132行,获取 文件” db/models/query.py“,第347行,获取 DoesNotExist:邮件匹配查询不存在。

如何解决呢

回答

6

修改查询以使用get_object_or_404或在执行查找时捕获YourModel.DoesNotExist(第3段)异常,并引发Http404异常。当你不记得DoesNotExist异常时,视图会产生500错误。作为一个副作用,这发送一个例外电子邮件到ADMINS定义它settings.py

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

我想主要的问题是在你的视图文件,你在哪里使用HTTP响应请求的对象。检查工作,所有的设置都在settings.py准确,还使用try除了更精确地查找错误的块之外。

1

产生的错误,因为你get查询未能匹配任何记录:

的两种情况为例。如果你想在这样的事件中抛出一个404页面,那么sdolan已经向你提供了关于如何做到这一点的建议。但是,如果您希望在查询未能获取任何匹配记录的情况下假设一些合理的默认值,则可以将该呼叫打包为gettrycatch块。例如:

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