Проект - бэкэнд сайта для публикации блогов

Posted by     "Георгий Кузора" on Tuesday, August 22, 2023

Ссылки

Ссылка на GitHub проекта - Проект для создания сайта для публикации блогов.

Цель проекта

Это проект по созданию полноценного бэкэнда сайта при помощи фреймворка Django и СУБД SQL Lite.

Проект включает в себя:

  • Модели для работы с базой данных
  • Представления на основе шаблонов веб-страниц
  • API для создания фронтэнд части.
  • Локализацию для Русского и Английского языков
  • Разрешения для групп пользователей
  • Страницу администратора для управления сайтом
  • Страницу регистрации пользователей
  • Страницу для логина пользователей
  • unit-тесты проекта

Структура проекта

Для создания структуры проекта использован фрэймворк Django. Структура проекта соответсвует стандартной структуре проекта Django:

  • users_app - приложение для регистрации и аутентификации пользователей сайта.
  • blogs_app- приложение для создания записей блогов, комментариев, загрузки изображений.
  • locale - директория для хранения файлов локализации сайта.
  • media - директория для хранения загруженных файлов изображений и CSV файлов.
  • project - директория для хранения файлов проекта.

Структура users_app

  • admin.py - файл для конфигруации административной панели django.
  • apps.py - файл для конфигурации приложения.
  • forms.py - файл для создания формы регистрации пользователей, формы входа на сайт.
  • models.py - файл для создания моделей для работы с базой данных.
  • urls.py - файл для задания рутингов веб-страниц.
  • views.py - файл для представлений веб-страниц.
  • templates - директория для хранения шаблонов веб-страниц.
    • login.html - шаблон страницы логина на сайте.
    • registration.html - шаблон страницы регистрации на сайте.
    • user_edit.html - шаблон страницы редактирования информации о пользователе.
  • tests - папка для хранения тестов приложения.
    • test_views.py - файл тестов представлений веб-страниц.

Структура blogs_app

  • admin.py - файл для конфигруации административной панели django.
  • api.py - файл с представлениями для Django Restframework Api.
  • apps.py - файл для конфигурации приложения.
  • forms.py - файл для создания формы публикации блога, формы публикации комментариев, формы загрузки изображений, формы загрузки CSV файлов.
  • models.py - файл для создания моделей для работы с базой данных.
  • permissions.py - файл для конфигурации пользовательских прав доступа.
  • serializers.py - файл сериализаторов Django Restframework Api.
  • urls.py - файл для задания рутингов веб-страниц.
  • views.py - файл для представлений веб-страниц.
  • templates - папка для хранения шаблонов веб-страниц.
    • blog_details.html - шаблон страницы с детальным отображением блога.
    • blog_list.html - шаблон страницы с отображением cписка блогов.
    • create_blog.html - шаблон страницы создания блога.
    • csv_upload.html - шаблон страницы загрузки CSV файла.
  • tests - папка для хранения тестов приложения.
    • test_views.py - файл тестов представлений веб-страниц.
    • test_api.py - файл тестов представлений Django Restframework Api.

Функции сайта

Реализованы следующие функции для работы с блогами:

  • Просмотр списка опубликованных блогов. Отображение названия, части текста, автора, даты создания блога.
  • Просмотр детальной страницы блога. Отображение названия, текста, изображений. Форма публикации комментариев. Отображение опубликованных комментариев.
  • Создание блога и загрузка изображений к нему.
  • Создание блогов путем загрузки CSV файла и информацией о них.
  • Регистрация пользователя.
  • Вход пользователя на сайт.
  • Редактирование данных пользователя.

Функции API

Реализован доступ к следущей информации через API:

  • Пагинация страниц.
  • Отображение списка пользователей и детальный вид пользователя:
    • Id пользователя.
    • Имя пользователя.
    • Опубликованные блоги.
    • Опубликованные комментарии.
  • Отображение списка блогов и детальный вид блога:
    • Заголовок блога.
    • Содержание блога.
    • Дата создания блога.
    • Автор блога.
    • Комментарии к блогу.
    • Изображения к блогу.
  • Отображение списка комментариев и детальный вид комментария:
    • Автор комментария.
    • Блог комментария.
    • Текст комментария.
  • Отображение списка загруженных изображений и детальный вид изображения:
    • Блог изображения.
    • Изображение.

Рутинги HTML страниц и API endpoints

HTML страницы

  • create_blog/ - Страница создания блога.
  • blog/ - Список блогов.
  • blog/<int:pk> - Страница блога.
  • create_blog/csv - Страница загрузки CSV файла.
  • register/ - Страница регистрации пользователя.
  • edit/ - Страница редактирования информации о пользователе.
  • login/ - Страница входа на сайт.
  • logout/ - Страница выхода с сайта.

API endpoints

  • api/ - Корневая страница.
  • api/users - Страница со списком пользователей.
  • api/blogs - Страница со списком блогов.
  • api/comments - Страница со списком комментариев.
  • api/uploadimages - Страница со списком загруженных изображений
  • api/users/<int:pk> - Детальная страница пользователя.
  • api/blogs/<int:pk> - Детальная страница блога.
  • api/comments/<int:pk> - Детальная страница комментария.
  • api/uploadimages/<int:pk> - Детальная страница загруженного изображения.