Django URLConf Redirect с нечетными символами - PullRequest
0 голосов
/ 13 декабря 2011

Я готовлюсь перенести старый классический сайт ASP на новую систему Django. В рамках этого шага мы должны настроить некоторые старые URL-адреса так, чтобы они указывали на новые.

Например, http://www.domainname.com/category.asp?categoryid=105 следует от 301 до http://www.domainname.com/some-category/

Возможно, я regex глупый или что-то в этом роде, но для этого примера я включил в свой URL-адрес следующее: (r'^asp/category\.asp\?categoryid=105$', redirect_to, {'url': '/some-category/'}),

Я думаю, что мне нужно экранировать . и ?, но по какой-то причине, когда я проверяю это, он не перенаправляется на /some-category/, он просто 404-й URL-адрес, как введено.

Я делаю это неправильно? Есть ли лучший способ?

Ответы [ 2 ]

2 голосов
/ 13 декабря 2011

Чтобы уточнить ответ Дэниэла Роузмана , строка запроса не является частью URL, поэтому вы, вероятно, захотите написать функцию представления, которая будет извлекать категорию из строки запроса и перенаправлять соответствующим образом. Вы можете иметь URL-адрес, например:

(r'^category\.asp', category_redirect),

И функция просмотра, как:

def category_redirect(request):
    if 'categoryid' not in request.GET:
        raise Http404
    cat_id = request.GET['category']
    try:
        cat = Category.objects.get(old_id=cat_id)
    except Category.DoesNotExist:
        raise Http404
    else:
        return HttpResponsePermanentRedirect('/%s/' % cat.slug)

(Конечно, с учетом ваших собственных вкусов и потребностей).

0 голосов
/ 13 декабря 2011

Все после ? не является частью URL. Это часть параметров GET.

...