Сайт в активній розробці
Веб-додаток або проект Django складається з окремих програм. Разом вони утворюють повноцінний веб-додаток. Кожна програма представляє якусь певну функціональність або групу функціональностей. Один проект може включати багато програм.
Це дозволяє виділити групу завдань в окремий модуль та розробляти їх відносно незалежно від інших. Крім того, ми можемо переносити програму з одного проекту до іншого незалежно від іншої функціональності проекту.
При створенні проекту він містить кілька програм за замовчуванням.
django.contrib.admin
django.contrib.auth
django.contrib.contenttypes
django.contrib.sessions
django.contrib.messages
django.contrib.staticfiles
Список усіх програм можна знайти в проекті у файлі settings.py у змінній INSTALLED_APPS:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
І, звичайно, ми можемо створювати свої програми, які реалізують певний функціонал. Для створення програми у проекті застосовується команда
python manage.py startapp назва_проекту
Так, створимо в проекті, створеному в минулій темі або новому, перший додаток,
яке називатиметься hello. Для цього виконаємо в командному рядку/терміналі наступну команду:
python manage.py startapp hello
В результаті в проекті Django буде створено програму hello. І після виконання цієї команди ми побачимо в проекті нову папку, яка зберігатиме всі файли створеної програми:
Розглянемо коротко його структуру:
папка migrations: призначена для зберігання міграцій - скриптів, які дозволяють синхронізувати структуру бази даних із визначенням моделей
__init__.py: вказує інтерпретатору python, що поточний каталог буде розглядатися як пакет
admin.py: призначений для адміністративних функцій, зокрема, тут наводиться реєстрація моделей, що використовуються в інтерфейсі адміністратора
apps.py: визначає конфігурацію програми
models.py: зберігає визначення моделей, які описують дані, що використовуються в додатку
tests.py: зберігає тести програми
views.py: визначає функції, які отримують запити користувачів, обробляють їх та повертають відповідь
Але поки що додаток ніяк не задіюється. Його треба зареєструвати у проекті Django. Для цього відкриємо файл settings.py і додамо до кінця масиву INSTALLED_APPS нашу програму:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'hello'
]
У проекті може бути кілька додатків, і кожну з них треба додавати таким чином.
Тепер визначимо якісь найпростіші дії, які виконуватиме цей додаток, наприклад,
надсилати у відповідь користувачеві рядок "Hello World".
Для цього перейдемо у проекті програми hello до файлу views.py, який за умовчанням має виглядати так:
from django.shortcuts import render
# Create your views here.
Змінимо код наступним чином:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello METANIT.COM")
У цьому випадку ми імпортуємо клас HttpResponse із стандартного пакету django.http. Потім визначається функція index(), яка як параметр отримує об'єкт запиту request. Клас HttpResponse призначений для створення відповіді, яка надсилається користувачеві.
І за допомогою виразу return HttpResponse("Hello METANIT.COM") ми відправляємо користувачеві рядок "Hello METANIT.COM"
Тепер в основному проекті Django відкриємо файл urls.py, який дозволяє зіставити маршрути з уявленнями, які будуть обробляти запит по цих маршрутах. За замовчуванням цей файл виглядає так:
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
Першим рядком із модуля django.contrib імпортується клас AdminSite, який надає можливості роботи з інтерфейсом адміністратора. Другим рядком із модуля django.urls імпортується функція path.
Ця функція визначає порівняння певного маршруту з функцією обробки. Так, у разі маршрут "admin/" буде оброблятися методом admin.site.urls.
Але вище ми визначили функцію index у файлі views.py, який повертає користувачеві рядок Hello METANIT.COM. Тому змінимо файл urls.py так:
from django.urls import path
from hello import views
urlpatterns = [
path('', views.index, name='home'),
]
Щоб використовувати функцію views.index, спочатку імпортуємо модуль views. Потім визначаємо зіставлення маршруту '' і функції views.index а також додатково ім'я для маршруту: name='home'.
По суті маршрут ' ' буде зіставлятися із запитом до кореня програми.
Тепер знову запустимо програму командою
python manage.py runserver
І знову перейдемо в браузері за адресою http://127.0.0.1:8000/, і браузер відобразить рядок "Hello METANIT.COM":