在Django的url.py文件中处理多个子URL

时间:2011-07-27 20:46:42

标签: django

在我的djang urls模式文件中,我想要保留一堆子url,但我不想让它变得难看。

我有一个处理所有Ajax请求的文件(根据请求输出不同的JSON文件。

示例(在我的url.py中): 形式:(网址,地图) (ajax/do_a, ajax.do_a) ajax/do_b, ajax.do_b) ajax/do_c, ajax.do_c) ajax/do_d, ajax.do_d)

这些都是子网址,例如。 mywebsite.com/ajax/do_a mywebsite.com/ajax/do_b 等

基本上do_a,do_b,do_c和do_d都是位于“ajax.py”文件中的相同的请求处理程序。我真的不想填写我的urls.py文件,其中包含所有这些URL的ajax请求。我想要移动它,以便我只有 AJAX / 在我的url.py文件中然后以某种方式解析我的请求处理程序中的ajax / request url(在ajax.py文件中),这样我就可以看到“ajax /”之后出现了什么字符串。我不知道该怎么做或者这样做是不是一个好主意....有人可以提供一些建议吗?谢谢:))

1 个答案:

答案 0 :(得分:1)

您可以设置调度程序视图来处理这些问题。例如,在您的urls.py中:

(r'^ajax/do_(?P<do_token>(\d+))/$', 'do_dispatcher', {}, "di_dispatcher"),

然后,给自己一个处理它的观点:

def do_a(request):
    pass
def do_b(request):
    pass
def do_c(request):
    pass

DO_LOOKUP = {
    'a' = do_a,
    'b' = do_b,
    'c' = do_c,
}

def do_dispatch(request, do_token):
    do_func = DO_LOOKUP.get(do_token, None)
    if do_func is None:
        return HttpResponseNotFound("No do could be found for token '%s'!" % do_token)
    else:
        return do_func(request)