Росту проекта нет предела. Следующий этап развития сервиса Yatube: новые страницы.
- Страница профайла пользователя: на ней будет отображаться информация об авторе и его посты.
- Страницу для просмотра отдельного поста.
Страницы профайла и отдельного поста: urls и views
В качестве адреса персональной страницы автора будет использоваться его username, это логично и удобно.В адресе страницы отдельного поста будет содержаться username автора и id поста.
Добавьте в конец файла posts/urls.py
новые пути:
from django.urls import path
from . import views
urlpatterns = [
...
# Главная страница
path('', views.index, name='index'),
# Профайл пользователя
path('profile/<str:username>/', views.profile, name='profile'),
# Просмотр записи
path('posts/<int:post_id>/', views.post_detail, name='post_detail'),
]
А в файл posts/views.py
добавьте функции:
def profile(request, username):
# Здесь код запроса к модели и создание словаря контекста
context = {
}
return render(request, 'posts/profile.html', context)
def post_detail(request, post_id):
# Здесь код запроса к модели и создание словаря контекста
context = {
}
return render(request, 'posts/post_detail.html', context)
Шаблон страницы профайла
Обычно backend-разработчик берет готовый HTML-код либо комбинирует части существующих шаблонов. Сейчас ваша задача — превратить статичный HTML-код в динамический шаблон.Комментариями в коде отмечено, где нужно заменить статические данные на переменные.
HTML<!DOCTYPE html>
<html lang="ru">
<head>
<!-- Подключены иконки, стили и заполенены мета теги -->
<title>Профайл пользователя <!--Лев Толстой--></title>
</head>
<body>
<header>
<nav class="navbar navbar-light" style="background-color: lightskyblue">
<div class="container">
<a class="navbar-brand" href="/">
<img src="/static/img/logo.png" width="30" height="30" class="d-inline-block align-top" alt="">
<span style="color:red">Ya</span>tube
</a>
</div>
</nav>
</header>
<main>
<div class="container py-5">
<h1>Все посты пользователя <!--Лев Толстой--> </h1>
<h3>Всего постов: <!-- --> </h3>
<article>
<ul>
<li>
Автор: <!--Лев Толстой-->
<a href="<!-- -->">все посты пользователя</a>
</li>
<li>
Дата публикации: <!-- 31 июля 1854 -->
</li>
</ul>
<p>
<!--
[Фокшаны.] Еще переходъ до Фокшанъ, во время котораго я ѣхалъ съ
Монго. Человѣкъ пустой, но съ твердыми, хотя и ложными убѣжденіями.
Генерал[у] по этому должно быть случаю, угодно было спрашивать о мое
мъ здоровьи.
Свинья! К[о]вырялъ носъ и ничего не написалъ — вотъ 2 упрека за
нын[ѣшній] день. Послѣдній упрекъ становится слишкомъ частъ,
хотя походъ и можетъ служить въ немъ отчасти извиненіемъ.
Отношенія мои съ товарищами становятся такъ пріятны, что мнѣ
жалко бросить штабъ. Здоровье кажется (2) лучше.
-->
</p>
<a href="<!-- -->">подробная информация </a>
</article>
<a href="<!-- -->">все записи группы</a>
<hr>
<!-- Остальные посты. после последнего нет черты -->
<!-- Здесь подключён паджинатор -->
</div>
</main>
<footer class="border-top text-center py-3">
<p>© <!--2021 --> Copyright <span style="color:red">Ya</span>tube</p>
</footer>
</body>
</html>
Шаблон страницы просмотра записи
Этот шаблон такой же, как для профайла, но совсем другой: там только один пост, да и дизайн отличается.
HTML<!DOCTYPE html>
<html lang="ru">
<head>
<!-- Подключены иконки, стили и заполенены мета теги -->
<title>Пост <!-- Первые 30 букв поста --></title>
</head>
<body>
<header>
<nav class="navbar navbar-light" style="background-color: lightskyblue">
<div class="container">
<a class="navbar-brand" href="/">
<img src="/static/img/logo.png" width="30" height="30" class="d-inline-block align-top" alt="">
<span style="color:red">Ya</span>tube
</a>
</div>
</nav>
</header>
<main>
<div class="row">
<aside class="col-12 col-md-3">
<ul class="list-group list-group-flush">
<li class="list-group-item">
Дата публикации: <!-- 31 июля 1854 -->
</li>
<!-- если у поста есть группа -->
<li class="list-group-item">
Группа: <!-- Название группы -->
<a href="<!-- -->">
все записи группы
</a>
</li>
<li class="list-group-item">
Автор: <!--Лев Толстой-->
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
Всего постов автора: <span ><!-- --></span>
</li>
<li class="list-group-item">
<a href="<!-- -->">
все посты пользователя
</a>
</li>
</ul>
</aside>
<article class="col-12 col-md-9">
<p>
<!--
[Фокшаны.] Еще переходъ до Фокшанъ, во время котораго я ѣхалъ съ
Монго. Человѣкъ пустой, но съ твердыми, хотя и ложными убѣжденіями.
Генерал[у] по этому должно быть случаю, угодно было спрашивать о мое
мъ здоровьи.
Свинья! К[о]вырялъ носъ и ничего не написалъ — вотъ 2 упрека за
нын[ѣшній] день. Послѣдній упрекъ становится слишкомъ частъ,
хотя походъ и можетъ служить въ немъ отчасти извиненіемъ.
Отношенія мои съ товарищами становятся такъ пріятны, что мнѣ
жалко бросить штабъ. Здоровье кажется (2) лучше.
-->
</p>
</article>
</div>
</main>
<footer class="border-top text-center py-3">
<p>© <!--2021 --> Copyright <span style="color:red">Ya</span>tube</p>
</footer>
</body>
</html>