Продолжение Django Book: первая страница Django-проекта — «Hello, World!».
Перед тем, как перейти к созданию нашего второго представления — давайте сделаем паузу, и узнаем немного больше о том, как работает Django.
Например, когда вы видите текст «Hello world«, зайдя на страницу http://127.0.0.1:8000/hello/ — что же именно делает Django за кулисами?
Всё начинается с файла настроек. Когда вы запускаете python manage.py runserver, скрипт ищет файл settings.py в директории вашего проекта. Этот файл содержит все настройки для данного Django проекта, все они записаны заглавными буквами: TEMPLATE_DIRS, DATABASES и т.д. Самая важная — это ROOT_URLCONF. Этот параметр указывает Django — какой именно модуль Python должен быть использован в качестве URLconf для этого сайта.
Вы ведь помните, что выполнение django-admin startproject создаёт файлы settings.py и urls.py? Сгенерированный таким образом файл settings.py содержит опцию ROOT_URLCONF, которая указывает на сгенерированнуый файл urls.py. Откройте файл settings.py, что бы увидеть это:
$ cat settings.py | grep ROOT_URLCONF ROOT_URLCONF = 'example.urls'
Эта строка указывает на файл example/urls.py.
Когда Django получает запрос к конкретному URL-у, например — /hello/, Django загружает модуль URLconf, указанный в ROOT_URLCONF. Затем проверяется каждый из URLpattern-ов в этом URLconf-е, сверяя полученный URL и шаблоны до тех пор, пока не найдёт совпадение. Когда Django находит совпадение с шаблоном в одном из URLpattern — вызывается функция представления, которая связана с ним и первым аргументом ей передаётся объект HttpRequest (мы рассмотрим HttpRequest детальнее попозже).
Как мы видели в нашем предыдущем примере — функция представления должна вернуть HttpResponse. Как только это происходит — Django делает всё остальное, преобразовывая Python-объект в подходящий Web-ответ с соответстсующими заголовками HTTP и телом (т.е. — содержимым страницы).
В итоге:
- поступает запрос к URL-у
/hello/; - Django определяет корневой
URLconf, проверяя параметрROOT_URLCONF; - Django проверяет все
URLpattern-ы вURLconf-е до первого совпадения шаблона с/hello/; - если сопадение найдено — вызывается связанная с этим шаблоном функция представления;
- функция возвращает
HttpResponse; - Django преобразовывает
HttpResponseв корректный ответ HTTP и страницу.
Теперь вы знаете основы того, как создавать страницы с Django. Это очень просто — просто напишите несколько функций, и свяжите их с URL-ами с помощью URLconfs.
Продолжение — в статье Django Book: второе представление – динамический контент.




