Продолжение 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: второе представление – динамический контент.