Django 1.5 url重定向与正则表达式?

时间:2013-05-18 18:08:54

标签: python django

我正在尝试做这样的事情:

(r'^$', RedirectView.as_view(url='^(?P<username>\w+)/$')),

但它似乎没有将正则表达式部分解析为实际的用户名......

我已经完成了研究,但我只能找到重定向到精确网址或其他正则表达式示例的示例,但只能在Django 1.1中使用

任何人都知道如何在Django 1.5 +中做到这一点?

3 个答案:

答案 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。它用于我们的一些项目