Динамически 301 старые ссылки на новый шаблон URL? - PullRequest
1 голос
/ 01 октября 2010

Я обновил свой шаблон URL с:

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

до

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

Так что я теперь полагаюсь на первичный ключ в URL, поскольку слаг может измениться в любое время. У меня есть около 40-50 ссылок, которые мне нужны, до 301 для пауков / сканеров.

Какой самый простой способ сделать 301 в Django вместо того, чтобы жестко кодировать Redirect 301 в моем Apache conf?

Ответы [ 2 ]

2 голосов
/ 21 февраля 2012

https://docs.djangoproject.com/en/dev/ref/generic-views/#django-views-generic-simple-redirect-to на самом деле, вероятно, ближе к тому, что вы ищете.

from django.views.generic.simple import redirect_to

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

Таким образом, вам не нужно загромождать свои взгляды.

1 голос
/ 01 октября 2010

Ах, понял это.Я сохранил старый шаблон URL и направил его на bugs.views.bug_detail_redirect и определил метод, который использует слаг и выполняет 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())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...