Django URLConf使用奇数字符重定向

时间:2011-12-13 19:48:22

标签: django django-urls

我准备将旧的经典ASP网站迁移到新的Django系统。作为移动的一部分,我们必须设置一些旧的URL以指向新的URL。

例如, http://www.domainname.com/category.asp?categoryid=105应为301 http://www.domainname.com/some-category/

也许我是正则​​表达式愚蠢的东西,但是对于这个例子,我已经包含在我的URLconf中了: (r'^asp/category\.asp\?categoryid=105$', redirect_to, {'url': '/some-category/'}),

我的想法是我必须逃避.?,但出于某种原因,当我去测试时,它不会重定向到/some-category/,它只是404s输入的网址。

我做错了吗?还有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

要详细说明Daniel Roseman's answer,查询字符串不是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)

(当然,改变你自己的品味和需求。)

答案 1 :(得分:0)

?之后的所有内容都不是网址的一部分。它是GET参数的一部分。