在我的urls.py
中,我有:
urlpatterns = [
url(r'^admin/', admin.site.urls, name='admin'),
url(r'^django-admin/', RedirectView.as_view(url='/admin/', permanent=True)),
]
因此,如果我转到localhost:8000/django-admin/
,它会成功将我重定向到localhost:8000/admin/
,如果我转到localhost:8000/django-admin/my-app/
,它还会将我重定向到localhost:8000/admin/
。
如何让localhost:8000/django-admin/my-app/
转到localhost:8000/admin/my-app/
?对于每个可能的子路径也是如此,例如localhost:8000/django-admin/my-app/my-view
,localhost:8000/django-admin/another-app/
等?
答案 0 :(得分:3)
根据docs这样的方法应该起作用,您可以从路径中捕获组并将其传递给url
给定的URL可能包含字典样式的字符串格式,该格式将根据URL中捕获的参数进行内插。因为总是执行关键字插值操作(即使没有传递任何参数),所以URL中的任何“%”字符都必须写为“ %%”,以便Python将它们转换为输出时的单个百分号。
url(r'^django-admin/(?P<rest>.*)', RedirectView.as_view(url='/admin/%(rest)s', permanent=True)
该网站对于弄清楚内置的基于类的视图如何工作http://ccbv.co.uk/projects/Django/2.2/django.views.generic.base/RedirectView/#get_redirect_url
特别有用