Link Search Menu Expand Document

Работа с шаблонами

Добавляем модель News в файл views.py

from .models import News

Далее для вывода всех новостей заменяем функцию index на следующую:

def index(request):
    news = News.objects.all()
    res = '<h1>Список новостей</h1>'
    for item in news:
        res += f'<div>\n<p>{item.title}</p>\n<p>{item.content}</p>\n<div>\n<hr>\n'
    return HttpResponse(res)

Но выводить данные таким способом очень нежелательно, так как в таком случае нам придется очень много текста для оформления страницы многократно дублировать

Используем шаблоны

Для использования шаблонов нужно создать папку templates в корне модуля и в ней необходимо создать еще одну папку с названием текущего используемого модуля (например news) и далее уже в этой папке создаем шаблон index.html

Далее в файле views.py заменяем функцию index:

def index(request):
	news = News.objects.all()
	return render(request, 'news/index.html', {'news': news, 'title': 'Список новостей'})

Первым параметром мы передаем request, вторым параметром мы передаем название шаблона, третьим параметром мы передаем контекст.

Пример файла index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{{ title }}</title>
</head>
<body>
<h1>{{ title }}</h1>
{% for item in news %}
    <div>
        <p>{{ item.title }}</p>
        <p>{{ item.content }}</p>
        <p>{{ item.created_at|date:"Y-m-d H:i" }}</p>
    </div>
    <hr>
{% endfor %}
</body>
</html>
КомандаОписание
item.created_at|date:"Y-m-d H:i"Данной строчкой мы форматируем вывод даты