2011-10-07 72 views
1

我有一个由django支持的网站。有几个url模式,我无法捕捉 说www.mysite.com/12233445www.mysite.com/@##$$$www.mysite.com/alphabetagamma这导致500错误页面,我希望所有这样的非标准网址重定向到404错误页面。任何线索是做这件事的最好方法?提高404而不是500 urls.py django

+2

通常情况下,如果URL不匹配,你会得到一个404页面。你必须有一个匹配的URL - 请发布你的urls.py。 –

回答

0

转到您的意见,执行除try块外的所有获取/过滤操作。

try: 

variable = object.get(some checks here) 

except: object.DoesNotExist 
raise Http404 

return (whatever) 
+0

通常,如果网址完全不正确,则根本不应该点击视图。示例 - 如果exam​​ple.com/nothing中没有任何内容,它应该直接引发404。如果您正在检查部分网址,则应使用上面的示例。示例example.com/news/news-exist正在工作(您认为试图在数据库中查找“新闻存在”)example.com/news/news-does-not-exist应该在未找到新闻后提出404 DB。这就是为什么你有get_object_or_404方法 –

1

通过使用定制handler500¶你可以改变从500到404的响应状态代码使您的项目回到这个职位可能会帮助你的想法如何做到这一点 - http://ilian.i-n-i.org/custom-404-not-found-page-with-django-cms/

但作为@Daniel说找不到500页是不正常的。打开调试模式,并检查导致500的错误。

1

您是否创建了404.html模板?如果您的settings.py中有DEBUG = False,但您尚未创建404.html模板,则会发生这种情况。这会引发TemplateDoesNotExist异常,因此会出现错误500响应。