Предположит, приложение Django, shop
, которого urls.py входит в основном urls.py:Джанго: Обратный URL-поиск с произвольными компонентами URL
# main urls.py
urlpatterns = patterns('',
(r'^[^/]+/shop/', include('shop.urls')),
)
Обратите внимание, что есть произвольный префикс перед тем /shop
. Это не представляет интереса для приложения shop
, это интересно только для некоторых промежуточных программ.
shop.urls
может выглядеть следующим образом:
# shop's urls.py
urlpatterns = patterns('',
url(r'^$', index, name="shop_index"),
url(r'^product/(?P<id>[^/]+)$', product, name="shop_product"),
)
Теперь я хочу использовать {% url %}
в моих shop
шаблонов. То, что свергает этот план, заключается в том, что сгенерированный URL-адрес не содержит префикс от глобального urls.py
. Сгенерированные URL-адреса больше похожи, например.
/^/shop/product/1
Вопрос: Теперь есть возможность (в Django 1.2 или стволу СВН), чтобы включить обратный поиск, чтобы использовать только один и тот же префикс, что есть в текущем URL? Например, если request.path
является /foo/shop/
, что {% urls shop_product id=1 %}
возвращает
/foo/shop/product/1
Единственный способ я придумал, чтобы охватить префикс и отправить его в shop
вид приложения, но это действительно плохое решение, так как shop
то должен иметь дело с чем-то, в чем он вообще не нуждается.
Хм, я так боялся (и начал мысленно внедрять расширение templatetag url). Спасибо за ответ. – Boldewyn