Домашнее задание. Новостной сайт
16 июня 2018
Как правило, веб-сайты с динамическим создание страниц используются для того, чтобы показать некую информацию пользователю такого сайта, причём эта информация хранится в каком-то формате и может меняться со временем.
Задача
Создать новостной сайт с возможностью простого поиска. Сайт должен содержать:
- Главную страницу — на неё просто выводится список новостей, отсортированный хронологически от новых к старым. Для каждой новости выводится дата и время, заголовок, автор и текст новости, а так же ссылку на полный текст (например, в виде надписи «Читать далее», или «Узнать больше).
- Форму поиска — она содержит поле «Что искать» и кнопку «Искать», которая отправляет форму.
- Страницу результатов поиска — туда выводятся все новости, в которых присутствует запрошенный текст (искать надо в имени автора, заголовке и тексте новости). Выводятся новости так же, как на главную страницу.
На всех страницах должна быть навигация: с главной страницы — на форму поиска, с формы поиска — на главную страницу, со страницы результатов поиска — на главную и обратно на форму поиска.
Примеры страниц:
Главная страница
Форма поиска
Результаты поиска
Хранилище новостей
Для хранения новостей в базе данных создадим модель 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.