У меня есть сайт на основе 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..
Это покрыто в документах.
Данный 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/'}), )
В этом примере выполняется перенаправление (код состояния 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'}),
Используйте следующее:
Он принимает ноль или более символов после проверки сервера / и помещает их после / server-test /.
Попробуйте это выражение:
('^servertest/', 'redirect_to', {'url': '/server-test/'}),
или вот это: ('^ servertest', 'redirect_to', {'url': '/ server-test /'})