Работа с шаблонами
Добавляем модель 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" | Данной строчкой мы форматируем вывод даты |