Задание. Веб-сайт с каталогом файлов
Разработать сайт, отображающий хранящиеся в нём текстовые файлы, и каталог этих файлов.
Исходные данные
Есть набор текстовых файлов (с расширением .txt). Эти файлы лежат в некотором каталоге в файловой системе сервера. Путь к этому каталогу пусть задаётся прямо в скрипте. Сами текстовые файлы сделайте, например, с помощью сервиса Яндекс.Рефераты, или скачайте небольшие рассказы из Библиотеки Мошкова, или возьмите тексты Пушкина и Гоголя из этого архива, или сами напишите, не важно.
Задача
Разработать сайт, состоящий из страницы каталога файлов (главная страница) и страниц просмотора этих файлов.
На главной странице выводится название сайта, приветствие и список файлов со ссылками на их страницы просмотра. Для каждого файла указать имя и размер (желательно размер вывести в удобном для восприятия формате, например, воспользовавшись django-фильтром filesizeformat). Список файлов можно вывести в виде нумерованного списка (тег <ol>
, вот описание), либо в виде маркированного списка (тег <ul>
, вот описание), либо в виде таблицы (тег <table>
, вот описание).
На странице просмотра выводится название сайта, название файла, ссылка на главную страницу и содержимое файла.
Вывод текстового файла на веб-страницу —довольно простая задача. Нужно прочитать содержимое файла в строковую переменную и просто передать её в шаблон. Да-да, весь текст файла в одной переменной.
Однако, как вы знаете, HTML не сохраняет форматирование текстовых файлов. Чтобы вывести содержимое текстового файла с сохранением переводов строк, есть несколько путей.
- Поместить содержимое текстового файла в шаблоне в тег
<pre>
(вот описание этого тега). - Вручную в скрипте (не в шаблоне!) заменить все символы перевода строки на тег
<br>
(вот его описание), но тогда нужно воспользоваться фильтромsafe
(вот описание), чтобы django корректно вывела теги. - Пропустить содержимое файла при выводе через django-фильтр
linebreaks
(вот страница документации по этому фильтру).
Замечания по реализации
- Список файлов в каталоге можно получить с помощью функций из модуля
os
. - При выводе содержимого файла убедитесь, что файл реально имеет расширение
.txt
. - Если запрошенного пользователем файла нет, выбрасывайте исключение
Http404
. - Верхняя часть («шапка») страницы должна быть одинаковой на всех страницах. В ней должно быть:
- Название сайта.
- Возможно, картинка-логотип (скачайте какую-нибудь картинку из интернета и разместите как статический файл, вот документация).
- Ссылка на главную страницу сайта.
- Информация об авторе сайта.