Skip to content

Latest commit

 

History

History
210 lines (142 loc) · 8.48 KB

File metadata and controls

210 lines (142 loc) · 8.48 KB

Модуль 1. Урок 3. Маршрутизация и функции представления в Django

В предыдущем уроке мы создали проект Cinemahub и добавили в него первое приложение — movies. Теперь пришло время сделать важный шаг: научить наш сайт отвечать на запросы пользователей.

Другими словами — настроить маршруты (пути) и написать первые функции представления, которые будут обрабатывать запросы и возвращать ответ.


1. Что такое функция представления

Когда пользователь открывает страницу сайта, он отправляет запрос. Django получает этот запрос и передаёт его функции представления (view). Эта функция решает, что именно нужно показать пользователю — текст, HTML-страницу, данные из базы и т. д.

Создадим первую функцию представления для приложения movies.

Откройте файл movies/views.py и добавьте код:

# movies/views.py
from django.http import HttpResponse

def index(request):
    return HttpResponse("Главная страница приложения Movies.")

Что здесь происходит:

  • request — это объект, содержащий информацию о запросе пользователя (например, метод, параметры, cookies и сессии).
  • HttpResponse — это ответ, который сервер отправляет обратно в браузер.
  • Текст внутри HttpResponse() и есть то, что увидит пользователь.

2. Добавляем маршрут (URL)

Теперь Django нужно “сказать”, по какому адресу открывать эту страницу. Для этого нужно добавить маршрут (path) в файл urls.py.

Откройте файл cinemahub/urls.py и измените его так:

# cinemahub/urls.py
from django.contrib import admin
from django.urls import path
from movies.views import index

urlpatterns = [
    path('admin/', admin.site.urls),
    path('movies/', index),
]

Разберём:

  • 'movies/' — это часть адреса, по которой будет открываться страница (http://127.0.0.1:8000/movies/).
  • index — это наша функция представления, которую мы импортировали из movies/views.py.

3. Проверим результат

Запустите сервер разработки:

python manage.py runserver

Теперь откройте в браузере адрес:

http://127.0.0.1:8000/movies/

Если вы всё сделали правильно, появится надпись:

Главная страница приложения Movies.

Поздравляем 🎉 — вы только что написали и запустили своё первое представление Django!


4. Главная страница сайта

Пока что мы обращаемся к адресу /movies/. Но логично, чтобы при переходе на главную страницу (http://127.0.0.1:8000/) тоже что-то отображалось.

Для этого можно добавить ещё один маршрут. Откройте cinemahub/urls.py и измените код:

# cinemahub/urls.py
from django.contrib import admin
from django.urls import path
from movies import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.index),  # Главная страница
    path('movies/', views.index),
]

Теперь при переходе по адресу http://127.0.0.1:8000/ отобразится та же страница.


5. Независимость маршрутов приложений

Пока все маршруты хранятся в одном файле cinemahub/urls.py, и со временем он может разрастись. Поэтому в Django принято выносить маршруты внутрь приложений, чтобы каждый модуль имел свой собственный urls.py.

Сделаем так для нашего приложения movies.

Шаг 1. Подключаем include

Изменим главный файл cinemahub/urls.py:

# cinemahub/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('movies/', include('movies.urls')),  # Подключаем маршруты приложения
]

Шаг 2. Создаём файл movies/urls.py

Теперь создайте в папке movies/ новый файл urls.py и добавьте туда код:

# movies/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.index),
    path('genres/', views.genres),  # Страница с жанрами фильмов (пока заглушка)
]

И добавим вторую функцию в views.py:

# movies/views.py
from django.http import HttpResponse

def index(request):
    return HttpResponse("Добро пожаловать в Cinemahub!")

def genres(request):
    return HttpResponse("Страница с жанрами фильмов.")

Теперь маршруты вашего приложения полностью автономны.


6. Проверяем в браузере

Запустите сервер (если он ещё не работает):

python manage.py runserver

И проверьте:

Вы должны увидеть наши тестовые тексты. Позже эти функции будут возвращать не просто строки, а полноценные HTML-шаблоны и данные из базы.


7. Как связаны файлы между собой

Файл Назначение
movies/views.py Хранит функции представления — логику обработки запросов
cinemahub/urls.py Главный маршрутизатор проекта (подключает приложения)
movies/urls.py Локальные маршруты приложения movies

Таким образом, каждое приложение в Django имеет свою зону ответственности, а проект остаётся структурированным и понятным.


Вопросы для закрепления

  1. Что делает функция представления (view) в Django?
  2. Для чего нужен файл urls.py?
  3. Чем отличается главный urls.py от файла маршрутов приложения?
  4. Что такое объект request?
  5. Что возвращает функция представления?
  6. Зачем нужен include()?
  7. Что произойдёт, если не зарегистрировать маршруты приложения?
  8. Где можно увидеть результат работы функции представления?
  9. Почему полезно выносить маршруты в отдельные файлы приложений?
  10. Какой адрес будет соответствовать маршруту path('movies/genres/', views.genres)?

Предыдущий урок | Следующий урок