Конфигурация 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 интерпретирует как /main/
, который не работает для более глубоких вложенных URL-адресов (см. Правку ниже).
Каксказать Django перенаправить на URL-адрес относительно префикса приложения?
Редактировать: Ошибка!
Ааа!Приведенный выше код работает нормально, но мой браузер кэшировал постоянное перенаправление на предыдущий URL, который был "/main/"
.Я очистил свой кеш, и мой новый URL "main/"
(который теперь является временным для предотвращения кеширования) работает просто отлично.Извините!
Но я понял, что ответ будет полезен, когда я захочу перейти по URL-адресу относительно корня приложения из более глубокого вложения: "relative/"
может работать для http://myserver.org/myapp/foo/
, но не для http://myserver.org/myapp/foo/bar/
.