Предположим, приложение Django, shop
, чей urls.py включен в основной urls.py:
# 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 или svn trunk) разрешить обратному поиску использовать тот же префикс, который есть в текущем URL? Например, если request.path
равно /foo/shop/
, то {% urls shop_product id=1 %}
возвращает
/foo/shop/product/1
Единственный способ, которым я придумал, - это использовать префикс и отправить его в shop
представлениях приложения, но это действительно плохое решение, так как shop
тогда имеет дело с чем-то, в чем он не нуждается. все.