Django 将旧url动态301到新url模式?

Django 将旧url动态301到新url模式?,django,Django,我已从以下位置更新了我的url模式: (r'^(?P<slug>[-\w]+)/$', 'bugs.views.bug_detail'), (r'^(?P[-\w]+)/$,'bugs.views.bug_detail'), 到 (r'^issue/(?P[0-9]+)/(?P[-\w]+)/$,'bugs.views.bug_detail'), 所以我现在依赖URL中的主键,因为slug可以随时更改。我有大约40-50个链接,我需要301蜘蛛/爬虫 在Django中执行301

我已从以下位置更新了我的url模式:

(r'^(?P<slug>[-\w]+)/$', 'bugs.views.bug_detail'),
(r'^(?P[-\w]+)/$,'bugs.views.bug_detail'),

(r'^issue/(?P[0-9]+)/(?P[-\w]+)/$,'bugs.views.bug_detail'),
所以我现在依赖URL中的主键,因为slug可以随时更改。我有大约40-50个链接,我需要301蜘蛛/爬虫


在Django中执行301最简单的方法是什么,而不是在我的Apache配置中硬编码
重定向301
s?

啊,找到了。我在那里保留了旧的url模式,并将其路由到
bugs.views.bug\u detail\u redirect
,定义了一个使用slug并执行301:

from django.http import HttpResponse, HttpResponseRedirect, HttpResponsePermanentRedirect

def bug_detail_redirect(request,  slug):
    #bug = get_object_or_404(Bug,id=id)
     bug = get_object_or_404(Bug,slug=slug)
     return HttpResponsePermanentRedirect(bug.get_absolute_url())
实际上可能更接近你想要的

from django.views.generic.simple import redirect_to

urlpatterns = patterns('',
    ('^foo/(?P<id>\d+)/$', redirect_to, {'url': '/bar/%(id)s/'}),
)
从django.views.generic.simple import重定向到
urlpatterns=模式(“”,
(“^foo/(?P\d+/$”,将_重定向到,{'url':'/bar/%(id)s/')),
)

这样你就不需要把视图弄得乱七八糟了。

这个链接现在断了,在Django 1.4中找到了
from django.views.generic.simple import redirect_to

urlpatterns = patterns('',
    ('^foo/(?P<id>\d+)/$', redirect_to, {'url': '/bar/%(id)s/'}),
)