(上下文:我对Django和web开发仍然非常陌生。)
1)有人能解释一下下面这句话的理由吗? 本问答回答了如何处理它的问题,但没有回答为什么它可能是一个好/坏的主意。
医生们状态,“page_not_found视图应该足以满足99%的Web应用程序,但是如果您想要覆盖它,可以在URLconf中指定handler404”。
也就是说,page_not_found视图只传递请求的URL,并忽略引发异常时提供的任何消息。在我看来,在默认情况下为404.html模板提供有用提示的选项对每个人都有好处。
2)我目前正在创建一个自定义视图,以便在以下情况下传递有用的消息。有什么理由我不应该吗?
我使用矩阵URL,所以基本资源是一个普通的分层URL,后面跟着基本格式的矩阵选项:;filter_type1=item:value,item:value;filter_type2=item:value.
因此,根据语法分析在发生错误之前得到的距离来提供有用的消息是非常容易的。对我来说,传递以下信息似乎很有帮助:
如果我错过了其他地方的解释,我很抱歉。我已经看了,我被问到google django-用户,但没有得到答复。
发布于 2011-10-16 07:33:24
我不太确定问题是什么。默认情况下,找到视图是基本的,因为没有那么多情况需要解释为什么没有找到页面,只是没有找到。
我认为“矩阵选项”是指URL/GET参数,如:
http://domain.com/page/?option1=value&option2=value..
如果输入了不正确的参数组合,为什么不抛出404,为什么不默认为基本url/模板(http://domain.com/page/),并带有一条错误消息:"Option1只能是x、y、z“。这样,他们就会看到一个熟悉的页面,并且可以重新尝试他们的选择,而不必从404页面中导航(而且这并不会让人感到困惑,也不会让人困惑到为什么它不起作用)。
您可以使用django的消息传递框架轻松地完成这一任务(我过去就这样做过)。在检查视图中的参数时,向模板传递错误消息。
发布于 2011-10-16 21:07:35
如果您的数据是这样的:
http://example.com/foo;bar;baz
那么你做错了:)
然后,需要使用正则表达式来解析要处理的数据。
有些人在遇到问题时会想:“我知道,我会使用正则表达式。”现在他们有两个问题。
(Zawinski,1997年)
相反,就像Pasty腿建议的那样,使用GET参数。
更好的是,使用django表单处理和:
您可以通过GET请求或POST请求来完成这一任务。POST具有‘干净’urls和更长的数据体的优点。GET意味着urls可以被书签标记。
这一切归结为使用框架的正确部分来完成正确的任务。URL路由使用正则表达式来计算哪个URL访问哪个视图。您制作的url模式越简单,它们就越容易维护。用户输入应由表单处理。
发布于 2013-02-24 12:56:59
我认为你之所以难以理解这一点,是因为你试图混淆两个不同的问题。
首先是实际页面是否被找到的问题。
第二,提供的参数是否有效的问题。
因此,如果(部分) url是:
.../whatever/?param1=value1¶m2=value2
如果页面/whatever/default
是not ,则应该向您显示"404 Page not found"
类型的错误消息。在本例中,不能告诉所提供的参数或值是否正确。请求的页面不存在,因此您不知道参数用于哪个页面。您甚至不能假设指定了正确的domain name
。可能有许多任意域、urls和页面的参数是有效的,还有许多其他的参数是无效的。
如果页面/whatever/default
被找到,那么:
如果指定错误的参数可能导致该页加载/重定向一个不存在的页,则该页应阻止此操作。如有必要,应由该页面来验证所提供的参数,并采取适当的行动并显示适当的消息。
https://stackoverflow.com/questions/7783972
复制相似问题