2015-09-04 2 views
0

У меня есть и старый сайт Wordpress. Он URLs нравится:Ловля URL-адресов с параметрами GET

/?wpsc-product=abc

Я построил новый сайт в Django, с URL, как:

/products/abc/

Как я могу поймать старых URL-адресов и перенаправить их на новые? На самом деле, я не уверен, как я могу уловить URL с параметрами.

Я хотел был бы написать каждое переадресацию, вместо того чтобы делать регулярное выражение, так как я не сохранил все пули, некоторые из них изменены.

ответ

2

Вы не можете поймать параметры GET, например ?wpsc-product=abc, в своем urls.py, но вы можете написать представление, которое проверяет параметры GET и перенаправляет на новый вид.

Ниже приведен упрощенный urls.py с двумя видами. Индексный перенаправляет запросы с параметрами и перенаправляет их (например, /?wpsc-product=abc), а также обрабатывает запросы без каких-либо параметров (т.е. /, и возвращает обработанный шаблон индекса.

urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
    url(r'^products/(?P<slug>[-\w]+)/$', views.view_product, name='view_product'), 
] 

from django.shortcuts import redirect, render 

def index(request): 
    # check for wpsc-product in GET params 
    if 'wpsc-product' in request.GET: 
     return redirect('view_product', slug=request.GET['wpsc-product']) 
    else: 
     # return the regular index template 
     return render(request, 'index.html', {}) 
+0

Это частичный ответ, так как URL перенаправляется тот же самый slug.Это не будет работать, если slug изменился на новом веб-сайте. Хорошо, во всяком случае. – bmiljevic

+1

У вас есть доступ к slug в представлении, его легко изменить, если это необходимо. – Alasdair

Смежные вопросы