带有奇数字符的Django URLConf重定向

带有奇数字符的Django URLConf重定向,django,django-urls,Django,Django Urls,我正准备将一个旧的经典ASP站点迁移到一个新的Django系统。作为移动的一部分,我们必须设置一些旧的URL以指向新的URL 比如说,, http://www.domainname.com/category.asp?categoryid=105应该是301到http://www.domainname.com/some-category/ 也许我是regex傻瓜或者其他什么,但是对于这个例子,我在我的URLconf中包含了以下内容: (r'^asp/category\.asp\?categoryi

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

比如说,,
http://www.domainname.com/category.asp?categoryid=105
应该是301到
http://www.domainname.com/some-category/

也许我是regex傻瓜或者其他什么,但是对于这个例子,我在我的URLconf中包含了以下内容:
(r'^asp/category\.asp\?categoryid=105$,重定向到,{'url':'/some category/'),

我的想法是,我必须避开
,但出于某种原因,当我去测试这个时,它没有重定向到
/some category/
,它只是404输入的URL


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

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

详细说明,查询字符串不是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)
(当然是根据你自己的口味和需要而改变的。)