Django rest framework
Содержание:
- Введение
- Unsupported previous releases
- Установка Django через pipenv
- Создание виртуального окружения
- Установка Django
- Example
- Создаем проект на Django
- Плюсы Django
- Сколько зарабатывают Python-Django-программисты
- Установка и настройка Git для сайта на Django
- Stepik Academy
- Создание проекта¶
- Настройка Django через командную строку
- Улучшаем админку
- Конвертеры маршрутов в Django 2.0+ (path converters)
Введение
- Django — это веб-фреймворк, написанный на Python.
- Python — это высокоуровневый интерпретируемый язык программирования общего назначения.
- API (Application Programming Interface, интерфейс приложения) — это набор правил и механизмов, посредством которых приложение или его части взаимодействуют с другими приложениями.
- REST (Representational State Transfer) — это программная архитектура интерфейсов REST.
Как сказано в диссертации Роя Филдинга: «REST — это архитектурный стиль, который в основном использует существующие технологии и протоколы интернета. Попросту говоря, это представление данных для клиента в подходящем для него формате.»
Следовательно, RESTful + API (интерфейс) является широко используемой терминологией для реализации такой архитектуры и связанных с ней ограничений (например, в веб-сервисах).
Вот пример запроса из интерфейса Github:
Вы получите примерно следующее:
{ "login": "joshuadeguzman", "id": 20706361, "node_id": "MDQ6VXNlcjIwNzA2MzYx", "avatar_url": "https://avatars1.githubusercontent.com/u/20706361?v=4", "gravatar_id": "", "url": "https://api.github.com/users/joshuadeguzman", "html_url": "https://github.com/joshuadeguzman", "followers_url": "https://api.github.com/users/joshuadeguzman/followers", "following_url": "https://api.github.com/users/joshuadeguzman/following{/other_user}", "gists_url": "https://api.github.com/users/joshuadeguzman/gists{/gist_id}", "starred_url": "https://api.github.com/users/joshuadeguzman/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/joshuadeguzman/subscriptions", "organizations_url": "https://api.github.com/users/joshuadeguzman/orgs", "repos_url": "https://api.github.com/users/joshuadeguzman/repos", "events_url": "https://api.github.com/users/joshuadeguzman/events{/privacy}", "received_events_url": "https://api.github.com/users/joshuadeguzman/received_events", "type": "User", "site_admin": false, "name": "Joshua de Guzman", "company": "@freelancer", "blog": "https://joshuadeguzman.me", "location": "Manila, PH", "email": null, "hireable": true, "bio": "Android Engineer at @freelancer. Building tools for humans.", "public_repos": 75, "public_gists": 2, "followers": 38, "following": 10, "created_at": "2016-07-28T15:19:54Z", "updated_at": "2019-06-16T10:26:39Z" }
Получен набор данных в формате JSON.
JSON ( JavaScript Object Notation) — это открытый файловый формат, в котором обычный текст используется для передачи объектов данных, состоящих из пар атрибут-значение и типов данных массива. Конечно, существуют и другие форматы, такие как XML, INI, CSV и так далее. Но на сегодняшний день, JSON, благодаря своей интуитивной и понятной структуре, применяется крайне широко вне зависимости от того, какой язык программирования используется.
Unsupported previous releases
These release series no longer receive security updates or bug fixes.
Release Series | Latest Release | End of mainstream support | End of extended support |
---|---|---|---|
3.0 | 3.0.14 | August 3, 2020 | April 6, 2021 |
2.1 | 2.1.15 | April 1, 2019 | December 2, 2019 |
2.0 | 2.0.13 | August 1, 2018 | April 1, 2019 |
1.11 LTS | 1.11.29 | December 2, 2017 | April 1, 2020 |
1.10 | 1.10.8 | April 4, 2017 | December 2, 2017 |
1.9 | 1.9.13 | August 1, 2016 | April 4, 2017 |
1.8 LTS | 1.8.19 | December 1, 2015 | April 1, 2018 |
1.7 | 1.7.11 | April 1, 2015 | December 1, 2015 |
1.6 | 1.6.11 | September 2, 2014 | April 1, 2015 |
1.5 | 1.5.12 | November 6, 2013 | September 2, 2014 |
1.4 LTS | 1.4.22 | February 26, 2013 | October 1, 2015 |
1.3 | 1.3.7 | March 23, 2012 | February 26, 2013 |
Security fixes, data loss bugs, crashing bugs, major functionality
bugs in newly-introduced features, and regressions from older versions of Django. Security fixes and data loss bugs. Last version to support Python 2.7.
Установка Django через pipenv
Для того чтобы оценить в действии, создадим новую директорию и установим Django. Первым делом переместимся на рабочий стол Desktop. Там будет создана новая директория , куда нам нужно будет попасть при помощи команды .
Shell
$ cd ~/Desktop
$ mkdir django
$ cd django
1 2 3 |
$cd~Desktop $mkdirdjango $cddjango |
Теперь используем Pipenv для инсталляции Django.
Shell
$ pipenv install django==3.0
1 | $pipenv install django==3.0 |
Если загляните внутрь нашей папки, то увидите, что в ней появилось два новых файла: и . Теперь у нас есть вся информация, необходимая для создания нового виртуального окружения, однако пока ничего не активировано. Исправим положение через .
Shell
$ pipenv shell
1 | $pipenv shell |
При работе на Ubuntu вы увидите, что название текущей директории в командной строке взято в скобки. Это значит, что виртуальное окружение активировано. Будучи внутри папки , перед знаком командной строки мы увидим .
Стоит иметь в виду, что из-за в системе Windows, сейчас нет возможности получить визуальное подтверждение об активации виртуального окружения. Однако в следующей секции можно запустить — тогда станет ясно, что виртуальное окружение Django установлено должным образом.
Shell
(django) $
1 | (django)$ |
Все работает! Теперь создаем новый проект Django под названием при помощи следующей команды. Не забудьте в конце поставить точку.
Shell
(django) $ django-admin startproject test_project .
1 | (django)$django-admin startproject test_project. |
Немного остановимся на причине использования точки (.) в предыдущей команде. Если вы просто запустите то Django по умолчанию создаст следующую структуру:
Структура
Shell
└── test_project
├── manage.py
└── test_project
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
1 2 3 4 5 6 7 |
└──test_project ├──manage.py └──test_project ├──__init__.py ├──settings.py ├──urls.py └──wsgi.py |
Как видите, создается новая директория , в ней файл и еще одна директория . Чувствуется повторение, ведь ранее мы уже создали директорию на рабочем столе и переместились в нее. Будет лучше выполнить команду с точкой на конце. Это нужно для установки в данную конкретную папку — на сей раз результат будет таков:
Структура
Shell
├── manage.py
└── test_project
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
1 2 3 4 5 6 |
├──manage.py └──test_project ├──__init__.py ├──settings.py ├──urls.py └──wsgi.py |
Стоит отметить, что по сути особого значения не имеет, будет ли на конце команды точка или нет, однако но некоторые разработчики предпочитают ее включать.
Осталось убедиться, что все работает. Для этого запустим локальный веб-сервер Django.
Shell
(django) $ python manage.py runserver
1 | (django)$python manage.pyrunserver |
Мы получим такой ответ:
Shell
Watching for file changes with StatReloader
Performing system checks…
System check identified no issues (0 silenced).
You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run ‘python manage.py migrate’ to apply them.
May 05, 2020 — 12:36:09
Django version 3.0, using settings ‘test_project.settings’
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
1 2 3 4 5 6 7 8 9 10 11 12 |
Watching forfilechanges with StatReloader Performing system checks… System check identified no issues(silenced). You have17unapplied migration(s).Your project may notwork properly untilyou apply the migrations forapp(s)admin,auth,contenttypes,sessions. Run’python manage.py migrate’toapply them. May05,2020-123609 Django version3.0,using settings’test_project.settings’ Starting development server athttp127.0.0.18000 Quit the server with CONTROL-C. |
При посещении откроется следующая страница:
Приветственная страница Django
Для остановки локального сервера используйте комбинацию . После этого выйти из виртуального окружения можно при помощи команды .
Shell
(django) $ exit
1 | (django)$exit |
Вновь активировать виртуальное окружение можно в любое время. — для этого используется команда в терминале.
Если вы сталкиваетесь с виртуальными окружениями впервые, сейчас они могут показаться немного запутанными, но не беспокойтесь — по ходу изучения все прояснится. Базовый принцип строится на установке новых пакетов через , их активации с и выхода через по мере завершения процесса.
Будет не лишним отметить, что через командную строку за раз можно активировать только одно виртуальное окружение. Мы будем создавать новое виртуальное окружение для каждого проекта. По этой причине перед созданием нового проекта не забывайте выходить из текущего окружения через или открывайте другие вкладки для новых проектов.
Создание виртуального окружения
Давайте
установим фреймворк Django на свой домашний компьютер. Здесь есть
множество вариантов, мы воспользуемся наиболее распространенным – установим
официальный релиз в новое виртуальное окружение (venv). Давайте я
поясню, что означают эти «умные фразы». Как вы уже догадались, Django – это серьезный
фреймворк и часто он взаимодействует с другими пакетами языка Python, да и сама
версия Python может иметь
значение. Так вот, чтобы все модули согласованно работали и выдавали ожидаемые
результаты на запросы пользователей, желательно и на тестовом сервере и на
реальном использовать одни и те же версии программных продуктов: начиная с
выбранной версии Django и заканчивая определенной версией интерпретатора
языка Python.
Но на компьютере
уже могут присутствовать другие версии программных модулей или же их
потребуется установить в будущем. Например, новую версию интерпретатора Python. Это может
негативно сказаться на разрабатываемом проекте. Чтобы этого не происходило, как
раз и создается виртуальное окружение, и все что установлено внутри него
надежно изолируется от других окружений, в том числе и глобального. Мы именно
так и поступим – создадим виртуальное окружение и разместим в нем текущую
версию языка Python и фреймворка Django.
Для этого нам
понадобится установленный интерпретатор Python в глобальном
окружении и работа с командной строкой. Если Python у вас еще не
установлен, то скачайте его с официального сайта:
Далее, я буду
все показывать на примере ОС Windows, т.к. именно под ней работаю. На
Linux и MacOS все происходит
похожим образом, но есть отличия. Основные из них я буду отмечать по ходу
изложения. Итак, чтобы работать с командной строкой Windows можно нажать
комбинацию клавиш Win+R и в появившемся окне набрать команду cmd. Если все
сделаете правильно, то появится вот такое консольное окно:
Но я
воспользуюсь другой, более удобной бесплатной программой ConEmu, которую можно
бесплатно скачать по адресу:
После установки и первого запуска в поле «Choose
your startup task or even shell with arguments:» укажу{Shells::cmd
(Admin)}:
И после нажатия
на кнопку «OK» увидим
следующее окно:
Для проверки
работоспособности интерпретатора Python наберем команду:
python -V
(В Linux или MacOS при установке Python версии 3 и
следует использовать команду python3 -V).
Если все
работает, то должны увидеть текущую версию языка. Если этого не произошло, то,
скорее всего, у вас не установлен Питон в глобальном окружении. Далее, с
помощью команды:
pip list
Можно посмотреть
список установленных пакетов опять же в глобальном окружении, т.к. мы именно в
нем сейчас находимся.
Далее, я создам
папку, в которой будет устанавливаться виртуальное окружение:
D:/Python/django/djsite
И в командной
строке перейду в этот каталог:
cd D:/Python/django/djsite
Затем, выполняем
команду:
python -m venv venv
для создания
виртуального окружения с именем venv в текущей папке.
(Если вы работаете под Linux, то соответственно пишете команду python3). Все,
виртуальное окружение создано и мы видим дополнительную папку venv. Внутри нее
имеются различные вложенные каталоги, которые и определяют содержимое данного
окружения. Осталось его запустить. Находясь в папке D:/Python/django/djsite, выполним
команду:
.\venv\Scripts\activate
(Если вы
работаете под Linux, то выполняется
команда «source venv/bin/activate»). В действительности, мы запускаем
исполняемый файл activate, который находится в подкаталоге \venv\Scripts\.
В результате должна появиться надпись (venv), означающая,
что мы находимся в виртуальном окружении с именем venv. Если теперь
выполнить команду:
pip list
то увидим всего
два пакета: сам pip и setuptools. То есть, это чистое виртуальное
окружение, в котором два пакета и интерпретатор языка Python.
Сразу отмечу,
чтобы выйти из виртуального окружения достаточно выполнить команду:
deactivate
и мы
возвращаемся в глобальное окружение.
Установка Django
Теперь у нас все
готово для установки самого фреймворка Django в созданное
виртуальное окружение. Так как я в своей работе использую интегрированную среду
PyCharm, то дальнейшие
действия по работе с виртуальным окружением буду делать через нее. Уверен, что
большинство из вас тоже пользуются PyCharm, поэтому все
должно быть предельно понятно. Итак, открываем созданный проект, указав папку:
D:/Python/django/djsite
и после
индексирования всех файлов интегрированная среда автоматически активизирует
установленное виртуальное окружение. Если это по каким-то причинам не
произошло, то нужно вручную указать PyCharm это окружение.
Для
этого следует перейти на вкладку Project Interpreter:
File
-> Settings -> Project:djsite -> Project Interpreter
и указать
интерпретатор из установленного окружения.
Далее, находясь
в корневой папке проекта, мы должны выполнить непосредственно установку Django с помощью
очевидной команды:
pip install
django
После этого в
наше виртуальное окружение будет устанавливаться данный фреймворк со всеми
необходимыми зависимостями. Если теперь выполнить команду:
pip list
то мы увидим
последнюю рабочую версию Django и несколько дополнительных
пакетов, необходимых для его работы.
Но это лишь ядро
фреймворка с общим функционалом. Используя это ядро, мы можем создавать
множество разных сайтов под управлением Django в рамках
текущего виртуального окружения. Чтобы посмотреть список команд ядра,
достаточно в терминале записать:
django-admin
Так вот, для
создания нашего первого сайта, нам понадобится команда startproject, которая
записывается так:
django-admin
startproject <имя сайта>
Здесь «имя
сайта», обычно, является доменным именем. Например, если мы собираемся
располагать сайт на домене:
coolsite.ru
то в качестве
имени логично выбрать coolsite. Давайте так и сделаем, выполним команду:
django-admin
startproject coolsite
Давайте теперь
запустим тестовый веб-сервер на нашем локальном компьютере и убедимся, что
созданный сайт работает. Для этого перейдем в папку coolsite:
cd coolsite
и выполним файл manage.py с командой runserver:
python manage.py
runserver
Преимущество
отладочного сервера в том, что он автоматически перезапускается при изменении
программы сайта. На практике это дает большое удобство. Но полностью полагаться
на эту возможность не стоит, так как иногда Django все же
игнорирует изменения, а точнее, новые дополнения, например, новые созданные
файлы. Поэтому, если вы видите, что что-то работает не так, попробуйте просто
перезапустить сервер вручную. Для его завершения достаточно нажать комбинацию
клавиш:
Ctrl + Break (а также Ctrl + C в Windows)
а, затем, снова
запустить:
python manage.py
runserver
Также обратите
внимание, что при первом запуске сервера в проекте появился еще один файл db.sqlite3 – файл БД SQLite3. Дело в том,
что по умолчанию Django использует именно такую СУБД
В
дальнейшем, мы можем это изменить и указать любую другую СУБД, которую
поддерживает данный фреймворк. Это может быть:
PostgreSQL, MariaDB, MySQL, Oracle и SQLite
Но вернемся к
запуску сервера. Его можно запускать также и со следующими параметрами:
python
manage.py runserver 4000
или так:
python manage.py runserver
192.168.1.1:4000
Я, надеюсь, из
этого занятия вы поняли, что из себя представляет фреймворк Django, как он
устанавливается, как создать проект нового сайта и как проверить его
работоспособность с помощью тестового веб-сервера.
Видео по теме
#1. Django — что это такое, порядок установки
#2. Модель MTV. Маршрутизация. Функции представления
#3. Маршрутизация, обработка исключений запросов, перенаправления
#4. Определение моделей. Миграции: создание и выполнение
#5. CRUD — основы ORM по работе с моделями
#6. Шаблоны (templates). Начало
#7. Подключение статических файлов. Фильтры шаблонов
#8. Формирование URL-адресов в шаблонах
#9. Создание связей между моделями через класс ForeignKey
#10. Начинаем работу с админ-панелью
#11. Пользовательские теги шаблонов
#12. Добавляем слаги (slug) к URL-адресам
#13. Использование форм, не связанных с моделями
#14. Формы, связанные с моделями. Пользовательские валидаторы
#15. Классы представлений: ListView, DetailView, CreateView
#16. Основы ORM Django за час
#17. Mixins — убираем дублирование кода
#18. Постраничная навигация (пагинация)
#19. Регистрация пользователей на сайте
#20. Делаем авторизацию пользователей на сайте
#21. Оптимизация сайта с Django Debug Toolbar
#22. Включаем кэширование данных
#23. Использование капчи captcha
#24. Тонкая настройка админ панели
Example
Let’s take a look at a quick example of using REST framework to build a simple model-backed API.
We’ll create a read-write API for accessing information on the users of our project.
Any global settings for a REST framework API are kept in a single configuration dictionary named . Start off by adding the following to your module:
Don’t forget to make sure you’ve also added to your .
We’re ready to create our API now.
Here’s our project’s root module:
You can now open the API in your browser at http://127.0.0.1:8000/, and view your new ‘users’ API. If you use the login control in the top right corner you’ll also be able to add, create and delete users from the system.
Создаем проект на Django
На этом этапе мы выполним команду, которая создаст проект на Django внутри нашего проекта на Python.
django-admin startproject mysite
В результате мы получим каталог внутри проекта с именем mysite, который будет содержать файлы настроек проекта. Внутри первого каталога будет еще один каталог с идентичным названием
Обратите внимание, что первый каталог – это всего лишь контейнер проекта на Django. Его имя можно назвать или переименовать на ваше усмотрение
Второй же каталог содержит файлы проекта, фактически это т.н. Python-пакет. Файлы созданные внутри него содержат базовые настройки сайта на Django.
Для удобства работы с проектом, на этом этапе рекомендую переместить содержимое второй папки mysite в первую, а файл manage.py в корень проекта. Это облегчит работу с проектом и не будет требовать от нас входить каждый раз когда открываем терминал внутрь первого каталога mysite. В результате структра проекта должна быть примерно следующей:
Фактически, в данный момент проект может быть запущен на сервере разработки и он будет работать. Для этого можно запустить команду из терминала
python manage.py runserver
Исходя из информации на скриншоте мы делаем вывод, что все работает и готово к созданию приложений уже внутри Django-проекта, но делать мы это будем уже в следующей части публикации.
А пока все! До новых встреч и удачи в создании сайта на Django!
Плюсы Django
Я уже достаточно расхвалил Python и его преимущество, так что давайте сфокусируемся на преимуществах Django, который является не только быстрым решением в веб разработке, включающим все необходимое для качественного кода и прозрачного написания, но также и отличной платформой для работы с клиентурой того или иного бизнеса, а так же разработчиков.
- Быстрота: Django был разработан, чтобы помочь разработчикам создать приложение настолько быстро, на сколько это возможно. Это включает в себя формирование идеи, разработку и выпуск проекта, где Django экономит время и ресурсы на каждом из этих этапов. Таким образом, его можно назвать идеальным решением для разработчиков, для которых вопрос дедлайна стоит в приоритете.
- Полная комплектация: Django работает с десятками дополнительных функций, которые заметно помогают с аутентификацией пользователя, картами сайта, администрированием содержимого, RSS и многим другим. Данные аспекты помогают осуществить каждый этап веб разработки.
- Безопасность: Работая в Django, вы получаете защиту от ошибок, связанных с безопасностью и ставящих под угрозу проект. Я имею ввиду такие распространенные ошибки, как инъекции SQL, кросс-сайт подлоги, clickjacking и кросс-сайтовый скриптинг. Для эффективного использования логинов и паролей, система пользовательской аутентификации является ключом.
- Масштабируемость: фреймворк Django наилучшим образом подходит для работы с самыми высокими трафиками. Следовательно, логично, что великое множество загруженных сайтов используют Django для удовлетворения требований, связанных с трафиком.
- Разносторонность: менеджмент контента, научные вычислительные платформы, даже крупные организации – со всем этим можно эффективно справляться при помощи Django.
Сколько зарабатывают Python-Django-программисты
Будущую специальность часто выбирают, исходя из величины зарплат и спроса. Поэтому в последнее время Python становится все популярнее среди новичков, которые начинают изучать программирование, спрос со стороны работодателей на таких специалистов также растет.
Разработчик с опытом работы от года со старта может рассчитывать на зарплату 80–120 тыс. рублей в месяц. Предложения с такими окладами опубликованы на популярных сайтах поиска работы: Indeed, HeadHunter, Trud.com.
Верхняя планка не ограничивается 120 тыс. рублями в месяц. Доход программиста зависит от специфики бизнеса, от города, знаний и умений специалиста. Максимальный оклад для вакансии Python-Django-программиста, который указали наниматели на HeadHunter, — 280 тыс. рублей в месяц. Соискателям достаточно иметь неполное или оконченное высшее образование и навыки работы с HTML, CSS.
По мере получения опыта увеличивается стоимость специалиста на рынке. Другие востребованные плюсы: знание технического английского, разработка под Unix/Linux, опыт работы MySQL, знание дополнительного языка программирования, разработка высоконагруженных информационных систем и оптимизация производительности.
Прораммист python-django на удаленной работе:
Самый популярный способ изучения Python — самообразование. И это действительно рабочий метод. Можно начать с курсов, книг со систематической программой, видеолекций для начинающих и создания собственных простых проектов. По мере формирования портфолио нужно начинать ходить на собеседования.
Установка и настройка Git для сайта на Django
Git является неотъемлемой частью разработки современного программного обеспечения. Это система управления версиями, которая отслеживает и фиксирует изменения в вашем проекте
Git позволяет без лишних проблем вести сотрудничество с другими разработчиками, быть в курсе изменений в проекте и возвращаться к предыдущим версиям написанного кода даже в тех случаях, когда было удалено нечто крайне важное
Для установки git в Ubuntu, можете выполнить следующею команду:
Shell
$ sudo apt install git
1 | $sudo apt install git |
Для систем Windows требуется скачать git со страницы Git for Windows. Отметьте кнопку «Download» и следуйте инструкциям установки.
После установки необходимо выполнить настройку системы, указав имя и адрес электронной почты, которые будет связаны со всеми git-коммитами. В командной строке наберите следующие две строчки, поменяв параметры имени и электронной почты на свои.
1 2 |
$git config—global user.name»Ваше имя» $git config—global user.email»yourname@email.com» |
Изменить данные конфигурации можно в любое время, для чего нужно выполнить все те же команды, но с новыми данными.
Stepik Academy
Django на практике
Изучите самый популярный Python-фреймворк, выполните 2 проекта, опубликуйте портфолио!
Программа курса — 4 недели, 2 проекта, 60 тем, 150 заданий
Знакомство и первый сайт
Протокол HTTP, Домены, URL, HTTP-сообщения, PyCharm, HTTP, Git и Github, основы HTML, введение в Django, запуск сервера.
Работа с HTML и шаблонами
Основы HTML, верстка с помощью Bootstrap, Github, Heroku, публикация проекта на сервере
Завершение проекта 1
Работа с базой данных
Основы SQL, ORM, cоздание, изменение, удаление моделей, фильтры, упорядочивание, отношения между моделями.
Обработка POST запросов, генерация форм, стилизация форм, валидация, авторизация и регистрация. Завершение проекта 2
Создание проекта¶
Если вы используете Django первый раз, вам придется позаботиться о некоторых первоначальных настройках. А именно, сгенерировать основу Django – настройки проекта, базы данных, приложений и др.
Используя командную строку, перейдите в каталог, где вы хотите хранить код, и выполните следующую команду:
django-admin.py startproject mysite
Это создаст каталог mysite в текущем каталоге. Если нет, смотрите .
Примечание
Вы не должны использовать в качестве названия проекта названия компонентов Python или Django. Это означает, что проект не может называться django (что конфликтует с Django) или test (конфликтует со стандартным пакетом Python).
Where should this code live?
Если вы раньше использовали PHP, то, наверное, привыкли размещать код проекта в корневом каталоге сайта на Web-сервере (например, /var/www). C Django вы не должны этого делать. Это плохая идея добавлять код проекта в корень Web-сервера, так как есть риск, что он будет доступен для просмотра. Не делайте этого в целях безопасности.
Разместите код в каталоге вне корневой директории сайта, например /home/mycode.
Давайте посмотрим, что было создано при помощи команды :
mysite/ manage.py mysite/ __init__.py settings.py urls.py wsgi.py
Doesn’t match what you see?
Структура проекта по умолчанию была недавно изменена. Если вы видите “простую” структуру (без внутреннего каталога mysite/), возможно вы используете версию Django, которая не соответствует этому учебнику. Вам следует читать старую версию учебника или обновить Django.
Рассмотрим эти файлы:
-
Внешний каталог mysite/ – это просто контейнер для вашего проекта. Его название никак не используется Django, и вы можете переименовать его во что угодно.
-
manage.py: Скрипт, который позволяет вам взаимодействовать с проектом Django. Подробности о manage.py читайте в разделе django-admin.py and manage.py.
-
Внутренний каталог mysite/ — это пакет Python вашего проекта. Его название – это название пакета Python, которое вы будете использовать для импорта чего-либо из проекта (например, mysite.urls).
-
mysite/__init__.py: Пустой файл, который указывает Python, что текущий каталог является пакетом Python. (Читайте в официальной документации Python, если вы новичок в Python.)
-
mysite/settings.py: Настройки/конфигурация проекта. Раздел Django settings расскажет вам все о настройках проекта.
-
mysite/urls.py: Конфигурация URL-ов для вашего проекта Django. Это “содержание” всех Django-сайтов. Вы можете прочитать о конфигурации URL-ов в разделе Менеджер URL-ов.
-
mysite/wsgi.py: Точка входа вашего проекта для WSGI-совместимых веб-серверов. Подробности читайте в разделе Развёртывание с WSGI.
Сервер для разработки
Давайте проверим, что все заработало. Перейдите во внешний каталог mysite, если вы этого еще не сделали, и выполните команду python manage.py runserver. Вы увидите следующий вывод:
Validating models... 0 errors found March 30, 2016 - 15:50:53 Django version 1.6, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
Только что вы запустили сервер для разработки Django, простой Web-сервер написанный на Python. Мы включили его в Django, чтобы вы сразу могли приступить к разработке, без дополнительной настройки боевого веб-сервера – например, Apache – пока вам это действительно не понадобится.
Следует заметить: НИКОГДА НЕ используйте этот сервер на “живом” сайте. Он создан исключительно для разработки. (Мы умеем делать Web-фреймверки, не Web-сервера.)
Теперь, когда сервер запущен, перейдите на страницу http://127.0.0.1:8000/ в браузере. Вы увидите страницу с “Welcome to Django”. Работает!
Changing the port
По умолчанию, команда запускает сервер для разработки на локальном IP используя порт 8000.
Если вы хотите изменить порт, укажите его как аргумент. Например, эта команда запускает сервер используя порт 8080:
$ python manage.py runserver 8080
Если вы хотите изменить IP, передайте его вместе со значением порта. Чтобы слушать все публичные IP (полезно, если вы хотите показать свою работу на других компьютерах), используйте:
$ python manage.py runserver 0.0.0.0:8000
Смотрите полное описание команды .
Automatic reloading of
Dev-сервер самостоятельно перегружается при изменении файлов. Однако некоторые действия не перегружают сервер, например, добавление новых файлов или компилирование файлов перевода. В таких случаях необходимо самостоятельно перегрузить сервер.
Настройка Django через командную строку
Командная строка является мощным инструментом, который позволяет выполнять все операции через текст. Разработчики используют ее повсеместно.
В дальнейшем будет показано как установить и настроить Django через командную строку.
На системах Mac командную строку можно открыть через Terminal, что находится в . Откройте новое окно Finder, затем директорию Applications, в нижней части будет папка Utilities, из которой двойным нажатием клавиши можно запустить приложение Terminal.
В Windows есть две встроенные командные оболочки: Command shell и PowerShell. Рекомендуем использовать PowerShell, которая несколько мощнее.
Если в примере требуется обратиться к «командной строке», значит вы должны открыть новую консоль, используя Terminal или PowerShell.
Существует множество команд и их вариаций, однако на практике при разработке в Django чаще всего используются следующие шесть:
- — перейти на директорию;
- — перейти на директорию выше;
- — вывести список файлов в текущей директории;
- — вывести название текущей директории;
- — создать директорию;
- — создать новый файл.
Запустите командную строку и посмотрите, как действует каждая команда. Знак доллара () является подсказкой, что перед вами командная строка. Все команды даны после знака . Предположим, вы работаете на Ubuntu Linux. Давайте поменяем директорию рабочего стола Desktop.
Shell
$ cd ~/Desktop
1 | $cd~Desktop |
Заметьте, что наше текущее местоположение, то есть , в командной строке было автоматически добавлено перед знаком . Для подтверждения верности отображаемой локации, можно использовать . Она выведет адрес текущей директории.
Shell
~/Desktop $ pwd
/home/wsv/Desktop
1 2 |
~Desktop$pwd homewsvDesktop |
На Ubuntu полученная строчка будет значить, что сейчас работает пользователь , который использует данный аккаунт на рабочем столе .
Теперь создадим новую директорию при помощи , задействуем , после чего создадим новый файл , используя команду . Стоит отметить, что, к сожалению, в Windows нельзя использовать команду . Если дается инструкция к созданию нового файла, делайте это в выбранном текстовом редакторе.
Shell
~/Desktop $ mkdir new_dir && cd new_dir
~/Desktop/new_dir $ touch index.html
1 2 |
~Desktop$mkdirnew_dir&&cdnew_dir ~Desktopnew_dir$touchindex.html |
Теперь используйте для отображения списка всех файлов текущей директории. Как видите, здесь только что созданный .
Shell
~/Desktop/new_dir $ ls
index.html
1 2 |
~Desktopnew_dir$ls index.html |
На финальном этапе вернемся в директорию Desktop, для чего используем команду и затем проверим верность локации с .
Shell
~/Desktop/new_dir $ cd ..
~/Desktop $ pwd
/home/wsv/Desktop
1 2 3 |
~Desktopnew_dir$cd.. ~Desktop$pwd homewsvDesktop |
Некоторые разработчики обходятся без мышки, используя только командную строку. С практикой такой подход значительно ускоряет скорость работы.
Улучшаем админку
Одно из слабых мест джанго-админки — главная страница. Идея авто-группировки моделей по приложениям и вывод столбиком в одну колонку работает только на начальных этапах, дальше это становится просто неудобно — куча лишней информации и довольно сложные пути для того, чтобы добавить полезную. Ну, например, чтобы названия приложений писались русскими буквами — полностью перекрывать шаблон.
И тут на помощь приходит django-admin-tools. С этим приложением минут за 20 можно получить «приборную панель» с произвольной группировкой приложений/моделей, вкладками, любым числом колонок, различными блоками, которые каждый пользователь сможет расставить, как ему удобнее, скрывать и сворачивать по желанию, закладками, настраиваемым меню и удобным способом добавления во все это хозяйство всего, чего только можно придумать.
Вот так, например, сейчас выглядит админка к сайту НадоВместе:
(это только часть, вот скриншот целиком)
Разберемся поподробнее.
Конвертеры маршрутов в Django 2.0+ (path converters)
Всем привет!
Маршрутизация в Django со второй версии фреймворка получила замечательный инструмент — конвертеры. С добавлением этого инструмента появилась возможность не только гибко настраивать параметры в маршрутах, но и разделять зоны ответственности компонентов.
Меня зовут Александр Иванов, я наставник в Яндекс.Практикуме на факультете бэкенд-разработки и ведущий разработчик в Лаборатории компьютерного моделирования. В этой статье я расскажу о конвертерах маршрутов в Django и покажу преимущества их использования.
Первое, с чего начну, — границы применимости:
- версия Django 2.0+;
- регистрация маршрутов должна выполняться с помощью .
Итак, когда к Django-серверу прилетает запрос, он сперва проходит через цепочку middleware, а затем в работу включается URLResolver (). Задача последнего — найти в списке зарегистрированных маршрутов подходящий.
Для предметного разбора предлагаю рассмотреть следующую ситуацию: есть несколько эндпоинтов, которые должны формировать разные отчёты за определённую дату. Предположим, что эндпоинты выглядят так: