2015-03-04 3 views
1

Я ищу базовый обработчик для HTTP-запросов в Django 1.4 (base.py, https://github.com/django/django/blob/stable/1.4.x/django/core/handlers/base.py#L109).Что такое обработчик обработчика запросов django()

После того, как код прошел через промежуточное программное обеспечение запроса и промежуточное ПО просмотра, вы можете увидеть, что он проверяет еще раз, если response is None в строке 107. Затем он пытается запустить функцию callback() (строка 109). Я хотел бы знать, где этот метод определен. Я просматриваю трассировку стека за ошибку, и после того, как этот метод называется следующей строкой в ​​трассировке, для файла, который не существует в моей среде dev (где ошибка не возникает). Итак, ясно, что этот callback() делает то, с чем я не знаком. Это параметр конфигурации, ключевое слово python или что-то еще?

Как Django/python решает, что делать, когда он достигает callback() по строке 109?

ответ

2

callback - вид вашего urls.py, который соответствует URL-адресу, к которому вы обращаетесь. Django получает это callback по телефону resolver.resolve (в версии файла Django 1.4, с которой вы связались, это происходит на line 98).

В Python функции являются объектами, поэтому resolver.resolve может возвращать функцию, которая может быть вызвана позже.

+0

Очень понятный ответ, спасибо! – smilebomb

Смежные вопросы