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

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

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

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

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

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

(МТУСИ)

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

«Создание формы и представления для нового поста»

Выполнила:

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

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

Проверил:

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

Москва 2023

Цель работы: создать дополнительную страницу – форму для создания статей.

Задание: создайте несколько статей через созданную форму; создайте стили, подключив CSS-файл к шаблону; добавьте проверку на то, что введенное название статьи уникально; загрузите проект на гит-репозиторий GitHub.

Ход работы:

  1. В директорию lab5 скопировать прошлый проект blog. В файле urls.py создать ещё один адрес: article/new/.

Листинг urls.py:

from django.contrib import admin from articles import views from django.urls import path, re_path urlpatterns = [ path('admin/', admin.site.urls), path('', views.archive, name='archive'), re_path(r'^article/(?P<article_id>\d+)$', views.get_article, name='get_article'), path('article/new/', views.create_post, name='create_post'), ]

  1. Содержимое create_post.html:

<!DOCTYPE html>

<html>

<head>

{% load static %}

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

<title>Django Public Blog - создать статью</title>

</head>

<body>

<div class="content">

<h1>Написать статью</h1>

<form method="POST">{% csrf_token %}

<input type="text" name="title" placeholder="Название статьи" value="{{ form.title }}">

<textarea name="text" placeholder="Текст статьи">{{ form.text }}</textarea>

<input type="submit" value="Сохранить">

</form>

{{ form.errors }}

</div>

</body>

</html>

  1. Создать функцию в файле views.py

def create_post(request): #if not request.user.is_anonymous(): if request.user.is_authenticated: if request.method == "POST": # обработать данные формы, если метод POST form = { 'text': request.POST["text"], 'title': request.POST["title"] } # в словаре form будет храниться информация, введенная пользователем if form["text"] and form["title"] and not Article.objects.filter(title=form["title"]).exists(): # если поля заполнены без ошибок Article.objects.create(text=form["text"], title=form["title"], author=request.user) return redirect('get_article', article_id=article.id) # перейти на страницу поста else: # если введенные данные некорректны if Article.objects.filter(title=form["title"]).exists() and not (form["text"] ): form["errors"]= u"Название статьи не уникально!\nНе все поля заполнены!" elif Article.objects.filter(title=form["title"]).exists(): form["errors"]=u"Название статьи не уникально!" else: form["errors"]=u"Не все поля заполнены!" return render(request, 'create_post.html', {'form': form}) else: # просто вернуть страницу с формой, если метод GET return render(request, 'create_post.html', {}) else: raise Http404

Результат работы:

Уведомления об ошибке:

Пустые поля:

Ссылка на репозиторий: https://github.com/LadaMyachina/labVvIT5