Май 2018

Этот курс закончился

Cписок курсов

Домашнее задание. Новостной сайт

16 июня 2018

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

Задача

Создать новостной сайт с возможностью простого поиска. Сайт должен содержать:

  1. Главную страницу — на неё просто выводится список новостей, отсортированный хронологически от новых к старым. Для каждой новости выводится дата и время, заголовок, автор и текст новости, а так же ссылку на полный текст (например, в виде надписи «Читать далее», или «Узнать больше).
  2. Форму поиска — она содержит поле «Что искать» и кнопку «Искать», которая отправляет форму.
  3. Страницу результатов поиска — туда выводятся все новости, в которых присутствует запрошенный текст (искать надо в имени автора, заголовке и тексте новости). Выводятся новости так же, как на главную страницу.

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

Примеры страниц:

Главная страница сайта (пример)

Главная страница

Форма поиска (пример)

Форма поиска

Результаты поиска (пример)

Результаты поиска

Хранилище новостей

Для хранения новостей в базе данных создадим модель NewsArticle, содержащую следующие поля:

  • pub_date_time – дата и время публикации новости (тип DateTimeField)
  • title — заголовок новости (тип CharField)
  • author – автор новости (тип CharField)
  • full_text_url – ссылка на оригинал новости (тип URLField)
  • text – текст новости (тип TextField)

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

Новости для сайта будут храниться в текстовом файле. Файл в кодировке UTF-8.

Новости отделены друг от друга одной или несколькими пустыми строками. Формат каждой новости такой:

Дата и время (формат ГГГГ-ММ-ДД ЧЧ:ММ)
Заголовок новости
Автор новости
URL новости
Текст новости Текст новости Текст новости
Текст новости Текст новости Текст новости
Текст новости
(пустая строка)

Текст новости может состоять из одной и более строк текста, и не может содержать пустых строк.

Ещё раз: текст новости продолжается до пустой строки (или до конца файла, если это последняя новость в файле). Пустых строк между новостями может быть несколько.

Пример такого файла: https://anhel.in/files/news.txt.

Это view должно быть помечено декоратором @login_required, так как загружать новости на сайт может только персонал сайта.

Замечания по реализации

Используйте шаблон страниц, или попробуйте сами сделать простейшую вёрстку. Можно воспользоваться CSS-фрэймворком. Например, W3.CSS.