【发布时间】:2011-11-25 22:46:48
【问题描述】:
我的应用程序的 url 配置当前如下所示:
from django.conf.urls.defaults import patterns
from django.views.generic.simple import redirect_to
urlpatterns = patterns("myapp.views",
(r"^$", redirect_to, {"url": "main/"}),
(r"^(?P<title>.+)/$", "article"),
...
)
当应用的 url 不带前缀使用时,这可以正常工作。
现在,我想将我的应用程序的 url 包含到项目的 url 配置中,并带有前缀;像这样:
urlpatterns = patterns("",
(r"^myapp/", include("myapp.urls")),
)
然后http://myserver.org/myapp/ 不会重定向到http://myserver.org/myapp/main/,而是重定向到http://myserver.org/main/。
我想我理解它是如何工作的:项目的 url 模式得到 "myapp/"。这匹配前缀,被剥离,留下"",它被传递给应用程序的模式。该应用程序与剥离无关,只是重定向到 main/,Django 将其解释为 ,它不适用于更深的嵌套 URL(请参阅下面的编辑)。/main/
如何告诉 Django 重定向到相对于应用前缀的 URL?
编辑:错误!
啊!上面的代码工作正常,但我的浏览器缓存了永久重定向到上一个 url,即"/main/"。我清除了我的缓存和我的新网址"main/"(现在是临时的以防止缓存)工作得很好。对不起!
但我意识到,当我想从更深的嵌套中转到相对于应用程序根目录的 url 时,答案会很有帮助:"relative/" 可能适用于 http://myserver.org/myapp/foo/,但不适用于 http://myserver.org/myapp/foo/bar/。
【问题讨论】:
标签: python django http redirect