Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

БФИ2203 Мячина ввит4

.docx
Скачиваний:
0
Добавлен:
02.08.2026
Размер:
896 Кб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования

Московский технический университет связи и информатики

(МТУСИ)

Лабораторная работа №4

«Создание страницы определенной записи»

Выполнила:

студентка группы БФИ2203

Мячина Лада Андреевна

Проверил:

Фурлетов Юрий Михайлович

Москва 2023

Цель работы: научиться создавать страницы с определенными записями. Научиться создавать статьи

Задание: теперь у определенной записи есть отдельная страница, а значит на странице списка постов каждый заголовок можно сделать ссылкой. Сделайте так, чтобы при клике по названию статьи происходил переход на страницу указанной записи. Для этого достаточно воспользоваться тегом <a>, которому в атрибуте href указать адрес перехода. Создайте стили, соответствующие макету для страницы определенной записи. Не забудьте добавить ссылку «Все записи». Загрузите ваш проект на любой гит-репозиторий (GitHub, GitLab, Google Code, Bitbucket и т.п.).

Ход работы:

Для начала выполнения лабораторной работы, в директории lab4 создать новый проект blog, провести первоначальную настройку и перенести приложение articles из предыдущей работы, добавить нужные данные в INSTALLED_APP и настроить файл urls.py).

Для того, чтобы можно было бы прочитать значение идентификатора (id) отдельного поста указать в качестве адреса следующее регулярное выражение (в файле urls.py):

from django.urls import path, re_path

urlpatterns = [

re_path(r'^article/(?P<article_id>\d+)$', views.get_article, name='get_article'),]

Создать в файле views.py из директории articles помимо уже написанной в предыдущей работе функции archive ещё и функцию get_article:

from django.http import Http404

def get_article(request, article_id):

try:

post = Article.objects.get(id=article_id)

return render(request, 'article.html', {"post": post})

except Article.DoesNotExist:

raise Http404

Рисунок 1 – Ошибка 404

В файл archive.html добавить код, чтобы названия статей стали ссылками:

<h2 class="post-title">{{ post.title }}

<a href="http://127.0.0.1:8000/article/{{post.id}}">{{post.title}}</a>

</h2>

Рисунок 2 – Архив статей

В папке articles/templates/ создать файл article.html.

Листинг файла:

<!DOCTYPE html>

<html>

<head>

{% load static %}

<link rel="stylesheet" href="{{ STATIC_URL }}/static/articles.css">

<title>{{post.title}}</title>

</head>

<body>

<div class="archive">

<div class="header">

<p>

{% load static %}

<img src="http://klubmama.ru/uploads/posts/2022-08/1661638464_20-klubmama-ru-p-maiskii-zhuk-podelka-foto-23.jpg" width="350" height="270"/>

<a class="link" href="http://127.0.0.1:8000">Все статьи</a>

</p>

</div>

<div class="one-post">

<h2 class="post-title">{{post.title}}</h2>

<div class="article-info">

<div class="article-author">{{ post.author.username }}</div>

<div class="article-created-date">{{ post.created_date }}</div>

</div>

<p class="article-text">{{ post.get_excerpt }}</p>

</div>

</div>

</body>

</html>

Создать css-файл в директории articles/static/ файл article.css. Теперь подключите этот файл к своим html-шаблонам.

Листинг css-файла:

body {

background: #1abc9c;

font-family: Tahoma, Arial, sans-serif;

color: #ffffff;

}

.header img {

display: block;

width: 318px;

margin-left: auto;

margin-right: auto;

}

.archive {

width: 960px;

margin-left: auto;

margin-right: auto;

}

.post-title a {

color: #ffffff;

}

.article-author {

width: 50%;

float: left;

}

.article-created-date {

text-align: right;

}

Рисунок 3 – Результат выполнения лабораторной работы

Рисунок 4 – Результат выполнения лабораторной работы

Ссылка на Github: https://github.com/LadaMyachina/labVvIT4