Обратная
связь

1.4 Представления(Views)

В данном тексте рассматривается работа с представлениями (views) в Django.

Рассмотрим работу веб-приложения:

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

Для отрисовки шаблона можно использовать класс TemplateView из модуля django.views.generic. Пример приведенного кода показывает создание представления NewsView, которое наследуется от TemplateView, и указывает шаблон news.html. 

views.py
from django.views.generic import TemplateView


class NewsView(TemplateView):
    template_name = "news.html"

В приложении news создадим каталог templates, а внутри файл news.html

Однако,если мы запустим сервер

python manage.py runserver

При попытке открыть адрес http://127.0.0.1:8000/news/ возникает ошибка "страница не найдена (404)". Для того чтобы связать этот адрес с представлением, необходимо добавить соответствующий путь в файл urls.py приложения news.

news/urls.py
from django.urls import path
from news.apps import NewsConfig
from news.views import NewsView

app_name = NewsConfig.name

urlpatterns = [
    path('', NewsView.as_view(), name='news'),
]

После этого, можно зарегистрировать все адреса приложения news в основном приложении, используя функцию include в файле urls.py основного приложения.

urls.py
from django.contrib import admin
from django.urls import path, include


urlpatterns = [
    path('admin/', admin.site.urls),
    path('news/', include('news.urls', namespace='news'))
]

при переходе на страницу news http://127.0.0.1:8000/news/ загрузится пустая страница, так и должно быть, ведь файл news.html пуст.

Скоро мы это исправим)