每次输入不存在的地址时,我都会收到通知。
追踪(最近一次通话): 在get_response中输入文件“/home/user/opt/local/django/core/handlers/base.py”,第100行 文件“/web/blog/views.py”,第33行,在帖子中 文件“/home/user/local/django/db/models/manager.py”,第132行,在获取 文件“/home/user/opt/local/django/db/models/query.py”,第347行,在get中 DoesNotExist:匹配后查询不存在。
如何解决它
答案 0 :(得分: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
答案 1 :(得分:1)
生成错误是因为您的get
查询无法匹配任何记录。如果你想在这样的事件中抛出404
页面,那么sdolan已经提供了关于如何做到这一点的建议。但是,如果您希望在查询无法获取任何匹配记录的情况下假设某些合理的默认值,则可以围绕get
和try
块将调用包装到catch
。例如:
try:
post = Post.object.get(pk=id)
except Post.DoesNotExist:
post = None
# Probably use some sensible defaults, or do something else
答案 2 :(得分:1)
在查询中使用get_object_or_404,有关详细信息,请参阅de documentation。
http://docs.djangoproject.com/en/1.3/topics/http/shortcuts/#get-object-or-404
答案 3 :(得分:0)
我想主要的问题是在您的视图文件中,您正在使用http响应请求对象。检查settings.py中的所有设置是否准确,还使用try except block来更精确地查找错误。