IvanNaum / Flask_Shop

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Flask Shop

Для запуска:

  1. Создать .env:
SECRET_KEY="<secret_key>"
  1. Запустить приложение:
flask run

Техническое задание

Товары должны иметь:

  1. Категорию
  2. Наименование продукта
  3. Краткое описание
  4. Производителя
  5. Цену
  6. Фотографию
  7. Оценки
  8. Комментарии

Пользователи делятся на 3 категории:

  • Неавторизованный пользователь — пользователь не входил на сайт: может только смотреть список продуктов и карточки продуктов
  • Авторизованный пользователь — пользователь вошел на сайт: может поставить каждому товару оценку от 1 до 5 и оставлять комментарии про товары
  • Администратор: может добавлять, удалять и редактировать товары

Авторизация

  1. Страница регистрации. Пользователь должен ввести:

    • E-mail
      1. Обязательно к заполнению
      2. Соответствует формату: имя@домен
      3. Не может быть двух пользователей с одинаковым e-mail
    • Логин
      1. Обязательно к заполнению
      2. Начинается с буквы латинского алфавита
      3. Содержит только символы латинского алфавита, цифры и знак "_"
      4. Содержит не менее 6 символов
      5. Не может быть двух пользователей с одинаковым логином
    • Пароль
      1. Обязательно к заполнению
      2. Содержит хотя бы 1 строчную и заглавную буквы латинского алфавита, цифру и один знаков пунктуации или один из символов: %, $, #, @, &, *, ^, |, , /, ~, [, ], {, }
      3. Содержит не меньше 8 символов
    • Поле для подтверждения пароля
  2. Страница входа. Пользователь должен ввести:

    • Логин
    • Пароль

Взаимодействия с товарами:

  1. Добавление продукта (для администраторов)
  2. Карточка продукта
    • Для неавторизованных пользователь - только просмотр
    • Для авторизованных пользователь:
      1. Оценка (от 1 до 5)
      2. Комментирование
    • Для администраторов:
      1. Те же, что и для авторизированных пользователей
      2. Редактировние товара
      3. Удаление товара (также удаляются комментарии и оценки)
  3. Список товаров
    • Следует выводить:
      1. Тип продукта
      2. Наименование продукта
      3. Производителя
      4. Цену
      5. Среднюю оценку
    • Фильтры:
      1. По типу продукта,
      2. По производителю.
    • Сортировки:
      1. по цене,
      2. по средней оценке.

Итоги

Реализованы все требования из технического задания

Структура базы данных

Структура базы данных

Структура URL'ов

Структура базы данных

Фичи

  1. Генерация форм с помошью библиотеки Flask-WTF
  2. Хэширование паролей
  3. Комментарии по Ajax
  4. Выставление оценок по Ajax

About


Languages

Language:Python 50.5%Language:HTML 49.5%