我正在尝试做这样的事情:
(r'^$', RedirectView.as_view(url='^(?P<username>\w+)/$')),
但它似乎没有将正则表达式部分解析为实际的用户名......
我已经完成了研究,但我只能找到重定向到确切 url 的示例或其他有效但仅在 Django 1.1 中有效的正则表达式示例
有人知道如何在 Django 1.5+ 中执行此操作吗?
子类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
是 url 而不是/myapp/
在上面的 url 中硬编码。例如,如果您要重定向到如下所示的 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,))
我想你需要这样的东西
(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
你可以试试这个包https://github.com/maykinmedia/django-regex-redirects。它在我们的一些项目中使用