В папке blog откроем файл views.py. Добавим строку импорта:
from .models import Blog
Мы импортировали класс Blog в код файла views.py, теперь создадим переменную blogs в функции all_blogs:
blogs = Blog.objects.all()
Теперь добавим в строку: return render(request, 'blog/all_blogs.html') словарь {'blogs': blogs}, чтобы отобразить в файле all_blogs.html атрибуты созданных объектов класа Blog.
Откроем файл all_blogs.html и добавим в него следующий код:
<h1>Мой блог</h1>
{% for blog in blogs %}
<h2>{{blog.title}}</h2>
<h5>{{blog.date}}</h5>
<p>{{blog.description}}</p>
{% endfor %}
С помощью разметки шаблонов django задали цикл for, в котором перебираем объекты класса Blog записанные в переменную blogs.
Для правильного отбражения полученных данных в окне браузера мы используем html теги <h2> для отображения заголовка записи блога, <p> для текста блога и отображения даты публикации записи в блоге.
В папке blog откроем файл views.py и сделаем так чтобы отображалось не более 5 постов на главной странице Блога. Страницы должны быть отсортированы по дате публикации.
def all_blogs(request):
blogs = Blog.objects.order_by('-date')[:5]
return render(request, 'blog/all_blogs.html', {'blogs': blogs})
Просмотрим содержимое базы данных нашего сайта с помощью просмотрщика SQLlite Viewer.
Из папки personal_portfolio_project загрузил файл db.sqlite3 в просмотрщик, который указан выше.
Теперь мы можем просмотреть содержимое всех таблиц базы данных нашего сайта.
Сайт на Django может работать со многими СУРБД без изменения кода. Для этого необходимо внести правильные настройки доступа к СУРБД в файле settings.py, который находится в папке personal_portfolio.
Как добавить статические файлы в наш проект
Чтобы использовать статические файлы в приложении portfolio, необходимо в папке portfolio создать папку static и в папке static создать папку portfolio. В созданную папку portfolio добавим изображение alexproit.jpg.
Откроем файл шаблона home.html и добавим туда с помощью html тега <img> изображение alexproit.jpg:
<img src="{% static 'portfolio/alexproit.jpg' %}" width="600">
Для того чтобы изображение из папки static отобразилось необходимо перед тегом <img> добавить строку:
{% load static %}
Запустим тестовый сервер и откроем браузер по ссылке:
http://localhost:8000/
Видим в окне браузера, что изображение отображается.
Добавим ссылку на файл aleksandr_myasoed.pdf с резюме, чтобы при нажатии на ссылку в браузере открывался файл pdf с резюме веб разработчика.
<a href="{% static 'portfolio/aleksandr_myasoed.pdf' %}">Резюме</a>
Откроем в браузере главную страницу и проверим результат.
Как видим, появилась ссылка на резюме. При нажатии на ссылку открывается файл pdf.
Аналогичным образом мы можем добавлять статические файлы в другие наши приложения, чтобы мы могли использовать их в шаблонах при отображении информации.
Сделаем заголовки постов ссылками на страницы постов
В папке blog откроем файл urls.py и добавим в список urlpatterns новую строку:
path('<int:blog_id>/', views.detail, name='detail'),
Ошибка
В папке blog откроем файл views.py и создадим функцию details, которая принимает на вход два параметра request и blog_id.
def detail(request, blog_id):
return render(request, 'blog/detail.html', {'id':blog_id})
В папке blog/templates/blog создаем шаблон deatails.html и добавляем в него следующий код:
<h1>{{ id }}</h1>
В папке blog откроем файл views.py и добавим импорт get_object_or_404:
from django.shortcuts import render, get_object_or_404
Функция get_object_or_404 нужна для поиска записей по первичному ключу в таблице базы данных сайта.
В функцию details добавим переменную blog и присвоим ей выражение:
blog = get_object_or_404(Blog, pk=blog_id)
Теперь переменная blog будет содержать объект класса Blog первичный ключ в таблице базы данных которого будет совпадать blog_id.
В папке blog/templates/blog открываем файл шаблона deatil.html и добавляем в него следующий код:
<h1>{{ blog.title }}</h1>
<h5>{{ blog.date }}</h5>
<p>{{ blog.description }}</p>
Допустил ошибку в коде. Закончил стрим, буду искать ошибку потом вам расскажу в следующей серии.