Найти тему
ALEXPROIT

🌟Сайт на Django👨‍💻 часть 8 23.06.2024

Оглавление

В папке 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 %}

-2

С помощью разметки шаблонов django задали цикл for, в котором перебираем объекты класса Blog записанные в переменную blogs.

Для правильного отбражения полученных данных в окне браузера мы используем html теги <h2> для отображения заголовка записи блога, <p> для текста блога и отображения даты публикации записи в блоге.

-3

В папке blog откроем файл views.py и сделаем так чтобы отображалось не более 5 постов на главной странице Блога. Страницы должны быть отсортированы по дате публикации.

def all_blogs(request):

blogs = Blog.objects.order_by('-date')[:5]

return render(request, 'blog/all_blogs.html', {'blogs': blogs})

-4

Просмотрим содержимое базы данных нашего сайта с помощью просмотрщика SQLlite Viewer.

SQLite Viewer

Из папки personal_portfolio_project загрузил файл db.sqlite3 в просмотрщик, который указан выше.

Теперь мы можем просмотреть содержимое всех таблиц базы данных нашего сайта.

-5

Сайт на Django может работать со многими СУРБД без изменения кода. Для этого необходимо внести правильные настройки доступа к СУРБД в файле settings.py, который находится в папке personal_portfolio.

-6

Как добавить статические файлы в наш проект

Чтобы использовать статические файлы в приложении portfolio, необходимо в папке portfolio создать папку static и в папке static создать папку portfolio. В созданную папку portfolio добавим изображение alexproit.jpg.

-7

Откроем файл шаблона home.html и добавим туда с помощью html тега <img> изображение alexproit.jpg:

<img src="{% static 'portfolio/alexproit.jpg' %}" width="600">

Для того чтобы изображение из папки static отобразилось необходимо перед тегом <img> добавить строку:

{% load static %}

-8

Запустим тестовый сервер и откроем браузер по ссылке:

http://localhost:8000/

Видим в окне браузера, что изображение отображается.

-9

Добавим ссылку на файл aleksandr_myasoed.pdf с резюме, чтобы при нажатии на ссылку в браузере открывался файл pdf с резюме веб разработчика.

<a href="{% static 'portfolio/aleksandr_myasoed.pdf' %}">Резюме</a>

-10

Откроем в браузере главную страницу и проверим результат.

-11

Как видим, появилась ссылка на резюме. При нажатии на ссылку открывается файл pdf.

Аналогичным образом мы можем добавлять статические файлы в другие наши приложения, чтобы мы могли использовать их в шаблонах при отображении информации.

Сделаем заголовки постов ссылками на страницы постов

В папке blog откроем файл urls.py и добавим в список urlpatterns новую строку:

path('<int:blog_id>/', views.detail, name='detail'),

-12

Ошибка

В папке 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)

-13

Теперь переменная blog будет содержать объект класса Blog первичный ключ в таблице базы данных которого будет совпадать blog_id.

В папке blog/templates/blog открываем файл шаблона deatil.html и добавляем в него следующий код:

<h1>{{ blog.title }}</h1>

<h5>{{ blog.date }}</h5>

<p>{{ blog.description }}</p>

-14

Допустил ошибку в коде. Закончил стрим, буду искать ошибку потом вам расскажу в следующей серии.