В продолжении Django. Структура проекта.
Итак проект создан — и уже работает, можно запустить development сервер и посмотреть, что получилось:
$ ./manage.py runserver Validating models... 0 errors found Django version 1.4.3, using settings 'first.settings' Development server is running at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
Здесь видно что сервер запустился на loopback интерфейсе на порту 8000. Использование loopback-интерфейса по-умолчанию кроет в себе некий смысл:
development-сервер можно (и нужно) использовать только для разработки проекта.
Впрочем — можно переопределить и адрес и порт, так например
$ ./manage.py runserver 0.0.0.0:8080
запустит сервер на всех адресах на порту 8080 и к нему можно будте обращаться по сети. Но, повторяюсь, использовать development-сервер можно только для разработки приложения, т.к. он имеет некоторые особенности. Из самых главных — это однопоточность, и автоматическая перезагрузка при изменении файлов проекта. Другие серверы (например apache+wsgi) необходимо перезагружать при изменении проекта, т.к. скрипты проекта читаются только при запуске сервера.
Уже можно открыть в браузере адрес http://127.0.0.1:8000 и увидеть надпись
It worked!
Должно работать как-то так:
Открывает страницу http://127.0.0.1:8000 и видим текст Hello World! Ничего более.
Итак, процессы происходящие в Django будет примерно такие:
- Браузер запросит URL /
- Django найдет соответствие в urls.py
- Запустит view соответсвующий этому URL
- View вернет HttpResponse с текстом Hello World!
- Django отправит ответ в браузер.
То, что делает браузер и Django нам нужно знать, но не нужно менять — это стандартные шаги для каждого запроса. От нас же зависят шаги 2 и 4, т.е. какой имеено view соответсвует данному URL и что именно он будет делать и возвращать.
Представление (view) — это просто функция, которая получает аргумент HttpReqeust и должна вернуть объект HttpResponse
Начнем с последнего, открываем файл views.py и создаем новое представление:
from django.http import HttpResponse def hello(Response): return HttpResponse("Hello World!") |
Теперь привяжем URL / к этому представлению, открываем файл urls.py и добавляем urlpatterns новый объект url:
url(r’^$’, ‘main.views.hello’), |
в данном файле уже довольно много комментариев с примерами, так что вопросов возникнуть не должно. Строчку же поясним:
url — функция возвращающая объект RegexURLPattern, не вдаваюсь, во всю механику: первый параметр — это регулярное выражение, определяющее URL, второй — представление которое нужно запустить. В нашем случае — регулярное выражение ^$ — соответсвующее пустому URL, и ‘main.views.hello’ — запустить передставление hello из пакета views пакета main, или, проще говоря, функцию hello файла views.py папки main.
Запускаем сервер (или, если он уже запущен) — смотрим страничку http://127.0.0.1:8000 — страничка изменилась на требуемую.
Дальше: Передаем параметры