Как мне переписать этот URL в Django? - PullRequest
1 голос
/ 29 марта 2012

У меня есть сайт на основе Django.Я хотел бы перенаправить URL-адреса с шаблоном servertest в них на тот же URL-адрес, за исключением того, что servertest должен быть заменен server-test.

Так, например, следующие URL-адреса будут сопоставлены и будут перенаправлены, как показано ниже:

http://acme.com/servertest/                        =>  http://acme.com/server-test/ 

http://acme.com/servertest/www.example.com         =>  http://acme.com/server-test/www.example.com

http://acme.com/servertest/www.example.com:8833    =>  http://acme.com/server-test/www.example.com:8833 

Я могу заставить первый пример работать, используя следующую строку в urls.py:

('^servertest/$', 'redirect_to', {'url': '/server-test/'}),

Не уверен, как это сделать для остальных, чтобы заменить только самую подходящую часть URL..

Ответы [ 3 ]

3 голосов
/ 29 марта 2012

Это покрыто в документах.

Данный URL-адрес может содержать форматирование строк в словарном стиле, которое будет интерполироваться по отношению к параметрам, зафиксированным в URL-адресе. Поскольку ключевое слово интерполяции всегда выполнено (даже если аргументы не передаются), любые символы "%" в URL должны быть записаны как "%%", чтобы Python преобразовал их до одного знака процента на выходе.

(Сильный акцент мой.)

А потом их примеры:

В этом примере выполняется перенаправление (код состояния HTTP 301) с / foo / / to / bar / /:

from django.views.generic.simple import redirect_to

urlpatterns = patterns('',
    ('^foo/(?P<id>\d+)/$', redirect_to, {'url': '/bar/%(id)s/'}),
)

Итак, вы видите, что это просто приятная простая форма:

('^servertest/(?P<path>.*)$', 'redirect_to', {'url': '/server-test/%(path)s'}),
3 голосов
/ 29 марта 2012

Используйте следующее:

('^servertest/(?P<path>.*)$', 'redirect_to', {'url': '/server-test/%(path)s'}),

Он принимает ноль или более символов после проверки сервера / и помещает их после / server-test /.

0 голосов
/ 29 марта 2012

Попробуйте это выражение:

   ('^servertest/', 'redirect_to', {'url': '/server-test/'}),

или вот это:
('^ servertest', 'redirect_to', {'url': '/ server-test /'})

...