Выведем записи блога на главную страницу сайта, используя фреймворк Django. Для этого создадим представление данных, подключим файл шаблона и укажем место вывода данных в шаблоне. Настроим главную страницу, заменив стандартную приветственную страницу Django.
Подготовка проекта
В админке существует одна запись. Главная страница сайта отображает стандартную приветственную страницу Django, которую заменим на вывод записей.
Представление данных (views.py)
В файле views.py импортируем необходимые классы:
from django.views.generic import View
from .models import Post
Создадим класс PostView, наследующий View:
class PostView(View):
"""Вывод записей."""
def get(self, request):
posts = Post.objects.all()
return render(request, 'blog/blog.html', {'post_list': posts})
Метод get получает все объекты из модели Post и передаёт их в шаблон blog/blog.html в словаре под ключом post_list. Функция render объединяет шаблон с данными и возвращает HTTP-ответ.
Шаблон (blog/blog.html)
Создадим директорию templates/blog в корне проекта и файл blog.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Мини-блок</title>
</head>
<body>
{% for post in post_list %}
<h3>{{ post.title }}</h3>
<p>{{ post.description }}</p>
<p>Автор: {{ post.author }}</p>
{% endfor %}
</body>
</html>
Шаблон использует цикл for для перебора записей из post_list и выводит заголовок (title), описание (description) и автора (author) каждой записи.
Настройка шаблонов в settings.py
В файле settings.py укажем путь к директории с шаблонами:
import os
TEMPLATES = [
# ...
{
'DIRS': [os.path.join(BASE_DIR, 'templates')],
# ...
},
]
Настройка URL (urls.py)
Создадим файл urls.py в приложении blog:
from django.urls import path
from . import views
urlpatterns = [
path('', views.PostView.as_view()),
]
В главном файле urls.py проекта подключим URL-адреса приложения blog:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]
Функция include встраивает URL-адреса из других файлов.
Проверка
Запустим сервер и проверим работу. На главной странице отображаются все записи из базы данных. При необходимости можно улучшить визуальное оформление вывода данных в шаблоне.