Django怪异的url调用错误

时间:2014-01-26 18:48:34

标签: django url

我有我的Django应用程序。当没有其他网址匹配时,我有一个重定向网址(比如404页面)要重定向。现在,如果任何url被称为

mysite.com/something

我被重定向到404页面。但

mysite/something/

工作正常。

重定向网址添加到所有内容的末尾:

url(r'^.*/',theview),

当我从urls.py中删除重定向网址时,问题就会被清除,上面的网址也会正常工作(最后没有/)。为什么会出错?

1 个答案:

答案 0 :(得分:1)

首先,链接到your previous post并提及你正在使用我给你的黑客是个好主意,因为(A)这不是正常设置而且(B)有人可能想出来比我更好的想法

其次,由于正常的url处理,你会看到这种行为。请注意,网址mysite.com/somethingmysite.com/something/ 相同。为了与django的网址匹配,区别在于:

url(r'^something/$')
url(r'^something$')

由于差异非常小,因此在使用正常设置时,如果找不到没有正斜杠的网址django's common middlewere *将自动尝试添加并测试它。只有这样,它才会放弃并转发到404页面。

但是,在您的设置中,catch-all网址会阻止第二轮,因为它确实适用于没有正斜杠的网址。我的解决方案别担心。您使用此hack的唯一原因是因为Debug=True表示调试页而不是您的自定义404页,这是您迁移到生产环境时不会遇到的问题

*非常感谢@Alasdair在评论中指出了这一点