我正在尝试做这样的事情:
(r'^$', RedirectView.as_view(url='^(?P<username>\w+)/$')),
但它似乎没有将正则表达式部分解析为实际的用户名......
我已经完成了研究,但我只能找到重定向到精确网址或其他正则表达式示例的示例,但只能在Django 1.1中使用
任何人都知道如何在Django 1.5 +中做到这一点?
答案 0 :(得分:2)
子类RedirectView
,并覆盖get_redirect_view
方法。
from django.core.urlresolvers import reverse
class UserRedirectView(RedirectView):
permanent = False
def get_redirect_url(self, pk):
# it would be better to use reverse here
return '/myapp/%s/' % self.request.user.username
您可以将UserRedirectView
添加到myapp.urls.py
模块中,如下所示:
url(r'^$', UserRedirectView.as_view(), name='myapp_index'),
最好是reverse
网址,而不是上面网址中的/myapp/
硬编码。例如,如果您要重定向到如下所示的URL模式
url(r'^(?P<username>\w+)/$', 'myapp.view_user', name='myapp_view_user'),
然后您可以将get_redirect_url
视图更改为:
def get_redirect_url(self, pk):
return reverse('myapp_view_user', args=(self.request.user.username,))
答案 1 :(得分:1)
我认为你需要这样的东西
(r'^(?P<username>\w+)/$', 'your_view'),
其中your_view
是
def page(request, username):
pass
如果需要使用参数重定向,可以使用
('^(?P<username>\w+)/$', 'django.views.generic.simple.redirect_to',
{'url': '/bar/%(username)s/'}),
更多信息:
https://docs.djangoproject.com/en/1.2/ref/generic-views/#django-views-generic-simple-redirect-to 在这里:
https://docs.djangoproject.com/en/1.4/topics/http/urls/#notes-on-capturing-text-in-urls
答案 2 :(得分:0)
您可以试试这个包https://github.com/maykinmedia/django-regex-redirects。它用于我们的一些项目