[英]How do I redirect by URL pattern in Django?
我有一个基于Django的网站。 我想将其中带有servertest
模式的URL重定向到相同的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的servetest部分。
给定的URL可能包含字典样式的字符串格式,它将根据URL中捕获的参数进行插值。 因为关键字插值总是完成 (即使没有传入参数),URL中的任何“%”字符都必须写为“%%”,以便Python将它们转换为输出上的单个百分号。
(非常强调我的。)
然后是他们的例子:
此示例从/ foo / <id> /发出永久重定向(HTTP状态代码301)到/ bar / <id> /:
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'}),
使用以下(为Django 2.2更新):
re_path(r'^servertest/(?P<path>.*)$', 'redirect_to', {'url': '/server-test/%(path)s'}),
在servertest /之后它需要零个或多个字符,并将它们放在/ server-test /之后。
试试这个表达式:
('^servertest/', 'redirect_to', {'url': '/server-test/'}),
或者这个:
('^ servertest','redirect_to',{'url':'/ server-test /'}),
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.