3. Проект: база даних для обліку студентів

Коли я починав роботу над даною книгою, то перша ідея була взяти за проект розробку персонального блога програміста. І вже написавши код для близько половини проекту я зрозумів, що він не є показовим та бракує специфікацій для важливих аспектів веб-розробки, як от робота з формами, автентифіковані користувачі, інтенсивна робота з базою даних і ще кілька речей, які, я вважав, є необхідними навіть для початківців.

На той час я вже мав кількох студентів на персональному менторстві за напрямком веб-розробка з Python та Django, а також мав невеликий список типових задач, що дають Python джунікам.

Тому, щоб не видумувати велосипед, я взяв найпоширеніший тестовий проект, розширив його деяким додатковим функціоналом таким чином, щоб в кінцевому результаті надати необхідний мінімум знань та практики початківцю.

Специфікація проекту

У цій книзі ми займемось розробкою бази даних для обліку студентів.

Основними сутностями цієї бази будуть студенти та групи.

Кожен студент матиме мінімальний набір необхідних полів (усі поля є обов’язковими):

  • повне ім’я: ім’я, прізвище та по-батькові;
  • дата народження;
  • фото студента;
  • номер студентського білету;
  • група;
  • та додаткові нотатки.

Група в свою чергу матиме:

  • назву (обов’язкове поле);
  • старосту групи - одного із студентів (не обов’язкове поле);
  • та додаткові нотатки.

Наша аплікація дозволятиме:

  • додавати нових студентів та групи;
  • редагувати існуючих студентів та групи;
Форма редагування студента
Форма редагування студента
  • видаляти існуючих студентів та групи;
  • переглядати списки існуючих студентів та груп, а також переглядати студентів в контексті обраної групи;
Сторінка із списком студентів
Сторінка із списком студентів
  • вести журнал відвідуваності;
Журнал відвідуваності студентів
Журнал відвідуваності студентів
  • працювати лише залогованим користувачам;
  • запускати окремий скрипт в командній стрічці, щоб отримати список студентів у вказаній групі.

Крім того вимоги проекту включатимуть:

  • адаптацію усього інтерфейсу нашої веб-аплікації під українську мову засобами інтернаціоналізації в Django;
  • виділення частину коду проекту в окрему аплікацію з подальшою можливістю використання коду в інших проектах;
  • автоматичний тест для одного користувацького сценарію;
  • ведення журналу щодо створення, редагування та видалення студентів і груп.

Ну і зрозуміло, що наприкінці виконаної роботи потрібно буде перенести проект і налаштувати програму на кінцевому сервері.

Чого ви навчитесь протягом проекту?

Таким чином після реалізації проект згідно вище зазначених специфікацій ми з вами навчимось:

  • налаштовувати своє робоче середовище, створювати проект та аплікації в Django;
  • працювати з базою даних з допомогою Django моделей;
  • верстати форми, елементи навігації та динамізувати сторінки з допомогою HTML, CSS, Twitter Bootstrap, Javascript бібліотеки jQuery та технології Ajax;
  • будувати Django в’юшки (від англ. view - вид, бачити) та працювати із динамічними шаблонами;
  • перекладати (інтернаціоналізувати) інтерфейс веб-аплікації;
  • будувати структуру веб-адрес сайту в Django з допомогою диспетчера адрес;
  • писати власну Django “мідлвару” (middleware);
  • створювати Django процесор контексту;
  • писати Django команду;
  • реалізувати автоматичний тест;
  • працювати із Django сигналами (подіями) та Python модулем логування;
  • створювати кастомний шаблонний тег;
  • працювати із Django адмінкою та робити невеликі зміни до її інтерфейсу;
  • обробляти веб-форми як з допомогою кастомного Python коду на сервері так і з допомогою заготованих в Django класів форм;
  • використовувати вбудовану в Django систему авторизації та аутентифікації для доступів користувачам;
  • деплоїти проект на продакшин сервер.

Що не входить у даний проект?

Завдяки роботі над проектом у даній книзі ви набудете усіх необхідних знань, щоб претендувати на посаду джуніора веб-розробника на Django фреймворку.

Даний фреймворк покриває і більш обширні та складніші теми, які є важливими для освоєння при роботі над великими та високо-навантаженими проектами. Але початківцю вони зазвичай не потрібні та і є занадто складними для перших кроків. Відповідно їх зазвичай не вимагають від джуніорів.

Тому нижчеперечислені теми не входять у дану книгу та будуть розкритими у наших майбутніх навчальних матеріалах, уже для тих, хто осягнув основи веб-розробки з допомогою Django:

  • monkey patching в контексті Django;
  • реалізація кастомних полів для Django моделей;
  • поглиблена кастомізація адмін частини Django;
  • оптимізація швидкодії Django сайту;
  • робота на низькому рівні із базою даних (SQL запити, транзакції, оптимізація швидкодії при роботі з базою);
  • безпека при розробці на Django;
  • кешування в Django;
  • реалізація REST API.

Частина даних тем є розкритою в серії постів у мене на блозі: Кращі практики розробки з Django. В майбутньому я планую присвятити окремі серії постів таким темам як безпека та швидкодія в Django.

Домашнє завдання

Тепер ви можете собі уявити, що ми з вами будуватимемо та який об’єм робіт на нас чекає.

На перший погляд вимог до нашого проекту досить багато, особливо як для початківців.

Але не варто засмучуватись, адже фреймворк Django для кожного із завдань підготував для нас цілий ряд інструментів, які дуже спростять наше з вами життя.

Професійний програміст, який знається на розробці під Django, може зазвичай виконати даний проект в межах 2-3х днів. Джуніор в межах 1-2х тижнів.

А початківець, який з нуля вивчає веб-програмування та фреймворк Django?

Відповідь на дане запитання є доволі обширною. Тому я переніс це запитання в останню главу даного посібника ;-) Вона базується виключно на моєму багаторічному досвіді роботи із початківцями.

На домашнє завдання цієї глави пропоную вам детальніше переглянути зображення нашої аплікації, що наведені вище та подумати як можна їх покращити, у чому бачите недоліки.

А також відвідайте сторінку Django у вікіпедії, зокрема секцію “Можливості” та ознайомтесь детальніше із набором інструментів даного фреймворку.

Якщо щось не буде зрозуміло - нічого страшного, це завдання швидше для ознайомлення, щоб ви могли зорієнтуватись в можливостях Django.

В наступній главі ми переходимо до практики!

А почнемо із налаштування вашого робочого середовища та редактора коду.

Далі заінсталюємо необхідні інструменти, створимо свій перший Django проект і уже в наступній главі побачимо дефолтну сторінку аплікації!

Тому пропоную зробити невелику паузу, приділити час домашньому завданню, запастись чаєм чи кавою, а вже тоді рухатись далі до наступної глави.

І хай цей шлях буде для вас легким і максимально цікавим!