Django错误(外部IP)

3

每当输入不存在的地址时,我都会收到通知。

跟踪(最近一次调用): 文件“/home/user/opt/local/django/core/handlers/base.py”,第100行,在get_response中 文件“/web/blog/views.py”,第33行,在post中 文件“/home/user/local/django/db/models/manager.py”,第132行,在get中 文件“/home/user/opt/local/django/db/models/query.py”,第347行,在get中 DoesNotExist: 没有与查询匹配的文章。

如何解决它?

4个回答

6
修改您的查询以使用get_object_or_404,或在进行查找时捕获YourModel.DoesNotExist(第三段)异常,并引发Http404异常。当您未捕获DoesNotExist异常时,视图会引发500错误。副作用是将异常电子邮件发送给在settings.py中定义的ADMINS

两种情况的示例:

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
错误是由于您的get查询未能匹配任何记录而生成的。如果您想在这种情况下抛出404页面,那么sdolan已经为您提供了如何做到这一点的建议。但是,如果您希望在查询无法获取任何匹配记录的情况下假定一些合理的默认值,则可以将对get的调用包装在trycatch块中。例如:

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

1

0
我猜主要问题在于你的视图文件,其中你正在使用HTTP响应请求对象。检查settings.py中的所有设置是否准确,并使用try except块更精确地查找错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接