【问题标题】:django Error (EXTERNAL IP)django 错误(外部 IP)
【发布时间】:2011-05-21 06:22:09
【问题描述】:

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

Traceback(最近一次调用最后一次): 文件“/home/user/opt/local/django/core/handlers/base.py”,第 100 行,在 get_response 文件“/web/blog/views.py”,第 33 行,在帖子中 文件“/home/user/local/django/db/models/manager.py”,第 132 行,在 get 文件“/home/user/opt/local/django/db/models/query.py”,第 347 行,在 get DoesNotExist:后匹配查询不存在。

如何解决

【问题讨论】:

    标签: python django url


    【解决方案1】:

    修改您的查询以使用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
    

    【讨论】:

      【解决方案2】:

      产生错误是因为您的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
      

      【讨论】:

        【解决方案3】:

        在查询中使用 get_object_or_404,有关详细信息,请参阅文档。

        http://docs.djangoproject.com/en/1.3/topics/http/shortcuts/#get-object-or-404

        【讨论】:

          【解决方案4】:

          我猜主要问题出在您的视图文件中,您正在使用 http 响应请求对象。检查 settings.py 中的所有设置是否准确,还可以使用 try except 块更准确地查找错误。

          【讨论】:

            猜你喜欢
            • 2015-04-06
            • 1970-01-01
            • 2013-09-17
            • 1970-01-01
            • 2013-02-26
            • 2016-01-10
            • 1970-01-01
            • 2020-08-12
            • 1970-01-01
            相关资源
            最近更新 更多