or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
Основы Python Django
Почему Django?
Django (Джанго) — свободный фреймворк для веб-приложений на языке Python, использующий шаблон проектирования MVC. Проект поддерживается организацией Django Software Foundation.
Веб-фреймворк Django используется в сайтах Instagram, Disqus, Mozilla, The Washington Times, Pinterest, YouTube, Google и др.
Django на сегодняшний день, без сомнения, является одним из самых популярных веб фреймворков Python.
Пожалуй лучшей иллюстрацией возможностей этого фреймворка может послужить Instagram, созданный на Django в 2010 г. и проданный Facebook в 2012 г. за $1 млрд.
Установка Django и создание первого проекта
Для корректной установки Django в начале нужно созадать папку проекта (латиницей). Затем в созданную папку установить Django и pipenv посредством утилиты pip, поставляемой в составе Python и выполняющей установку дополнительных библиотек из интернет-репозитория PyPI. Запустим командную строку и введем в ней такую команду:
Создадим новый, пока еще пустой проект Django, которому дадим имя samplesite. Для этого в запущенной ранее командной строке перейдем в папку, в которой должна находиться папка проекта, и отдадим команду:
django-admin startproject samplesite .
Пакет конфигурации включает в себя такие модули:
__init__.py
settings.py
urls.py
wsgi.py
asgi.py
(начиная с Django 3.0)В состав Django входит отладочный веб-сервер, написанный на самом языке Python. Чтобы запустить его, следует в командной строке перейти непосредственно в папку проекта и отдать команду:
python manage.py runserver
Приложения Django
Приложение в терминологии Django — это отдельный фрагмент функциональности разрабатываемого сайта, более или менее независимый от других таких же фрагментов и входящий в состав проекта.
Новое приложение создается следующим образом: Сначала остановим отладочный веб-сервер. В командной строке проверим, находимся ли мы в папке проекта, и наберем команду:
python manage.py startapp bboard
Команда startapp утилиты
manage.py
запускает создание нового приложения, имя которого указано после этой команды.Зарегистрируем только что созданное приложение в проекте. Найдем в пакете конфигурации файл settings.py, откроем его в текстовом редакторе и отыщем следующий фрагмент кода:
Список, хранящийся в переменной
installed apps
, перечисляет все приложения, зарегистрированные в проекте и участвующие в его работе.Добавим приложение bboard, включив в список новый элемент:
Мы указали строку с путем к классу BboardConfig, описывающему конфигурацию приложения и объявленному в модуле apps.py пакета приложения bboard.
Контроллер Django
Контроллер Django (он же view или представление) — это код, запускаемый при обращении по интернет-адресу определенного формата и в ответ выводящий на экран определенную веб-страницу. Контроллер Django может представлять собой как функцию (контроллер-функция), так и класс (контроллер-класс).
Откроем модуль
views.py
пакета приложения bboard, удалим имеющийся там небольшой код и заменим его следующим кодом:Любой контроллер-функция в качестве единственного обязательного параметра принимает экземпляр класса HttpRequest, хранящий различные сведения о полученном запросе: запрашиваемый интернет-адрес, данные, полученные от посетителя, служебную информацию от самого веб-обозревателя и пр. По традиции этот параметр называется request.
В теле функции мы создаем экземпляр класса
HttpResponse
(он объявлен в модулеdjango.http
), который будет представлять ответ, отправляемый клиенту. Содержимое этого ответа указываем единственным параметром конструктора этого класса. Готовый экземпляр класса возвращаемв качестве результата.Маршрутизатор Django
При поступлении любого запроса от клиента Django выделяет из запрашиваемого интернет-адреса путь, который передает маршрутизатору. Последний последовательно сравнивает его с шаблонными путями из списка маршрутов. Как только будет найдено совпадение, маршрутизатор передает управление контроллеру, связанному с совпавшим шаблонным путем.
Откроем модуль
urls.py
в текстовом редакторе и посмотрим, что он содержит:Список маршрутов, оформленный в виде обычного списка Python, присваивается переменной
urlpatterns
. Каждый элемент списка маршрутов (т.е. каждый маршрут) должен представляться в виде результата, возвращаемого функциейpath()
из модуляdjango.urls
. Последняя в качестве параметров принимает строку с шаблонным путем и ссылку на контроллер-функцию.Добавим в список новый маршрут, связывающий шаблонный путь
bboard/
и контроллер-функциюindex()
. Для чего дополним имеющийся в модулеurls.py
следующий код:Маршрутизатор Django при просмотре списка маршрутов не требует, чтобы путь, полученный из клиентского запроса (реальный), и шаблонный путь, записанный в очередном маршруте, совпадали полностью. Достаточно лишь того факта, что шаблонный путь совпадает с началом реального.
Начнем со списка маршрутов уровня приложения bboard. Создадим в пакете этого приложения (т. е. в папке bboard) файл urls.py и занесем в него следующий код:
Наконец, исправим код модуля urls.py из пакета конфигурации.
Вложенный список маршрутов, указываемый во втором параметре функции path(), должен представлять собой результат, возвращенный функцией include () из модуля django.urls. В качестве единственного параметра эта функция принимает строку с путем к модулю, где записан вложенный список маршрутов.