Обработка нескольких вложенных URL-адресов в файле Django url.py - PullRequest
0 голосов
/ 28 июля 2011

В моем файле шаблонов djang urls я хотел бы хранить несколько под-URL, но я не хочу делать это уродливым.

У меня есть файл, который обрабатывает все мои запросы Ajax (он выводит разные файлы JSON в зависимости от получаемого запроса.

пример (в моем url.py): в форме: (url, соответствует) (ajax/do_a, ajax.do_a) ajax/do_b, ajax.do_b) ajax/do_c, ajax.do_c) ajax/do_d, ajax.do_d)

это все под-URL, например, 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, а затем каким-то образом проанализировать URL-адрес ajax / request в моем обработчике запросов (в файле ajax.py), чтобы я мог видеть, какая строка пришла после «ajax /»Я не уверен, как это сделать, или если это будет хорошей идеей ... Может ли кто-нибудь предложить какой-нибудь совет? Спасибо:)

1 Ответ

1 голос
/ 28 июля 2011

Вы можете настроить диспетчерское представление для их обработки.Например, в вашем 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...