Giter VIP home page Giter VIP logo

exam_9's Introduction

Контрольная работа #9

Напишите приложение "Галерея", которое позволяет своим пользователям загружать фотографии, просматривать их, редактировать, удалять и добавлять в избранное.

Этап 1. Модели

Опишите модель фотографии: Фотография - картинка, обязательное; Подпись - строка, обязательное; Дата-время создания - проставляется автоматически; Автор - пользователь, обязательное.

Придумайте, как хранить избранное.

Этап 2. CRUD

Напишите CRUD для фотографий на шаблонах: Список; Просмотр; Добавление; Редактирование; Удаление.

Указания: В списке выведите фото, подпись, автора, и дату. Отсортируйте фотографии по дате создания в убывающем порядке. На странице просмотра выведите всё то же самое для одной фотографии, а также список пользователей, у кого она в избранном, в виде ссылок на их страницы. При создании фотографии автором автоматически становится текущий пользователь.

Этап 3. Аутентификация

Подключите приложение accounts. Достаточно, чтобы работали три страницы: Вход; Выход; Страница пользователя.

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

Этап 4. Права доступа

Настройте права доступа: Просмотр фото - доступен всем; Загрузка фотографий - любой аутентифицированный пользователь; Редактирование - автор ИЛИ пользователь с правом на редактирование; Удаление - автор ИЛИ пользователь с правом на удаление; API (см. 5 этап) - только для аутентифицированных пользователей.

Этап 5. Избранное

Напишите API для избранного любым способом: Добавить в избранное - фото добавляется в избранное текущего пользователя. Удалить из избранного - фото удаляется из избранного текущего пользователя. Фотографии не должны добавляться повторно.

Добавьте к фотографиям на главной и на страницу фотографии кнопки "Добавить в избранное" и "Удалить из избранного": При загрузке страницы видна одна из кнопок: если фото не в избранном - "Добавить", если в избранном - "Удалить". Если пользователь не аутентифицирован, кнопки не видны. По клику на кнопки отправляются AJAX-запросы в API. После успешного запроса нужно поменять кнопки местами - спрятать одну и показать другую. После неуспешного - логируйте ошибки в консоль. Бонусы Бонус (+1 балл): Блокируйте кнопки "Добавить в избранное" и "Удалить из избранного" на время отправки запроса, чтобы пользователь не спамил их.

Бонус (+5 баллов)

Добавьте модель комментария: Текст - текст, обязательное; Фотография - внешний ключ, обязательное; Автор - пользователь, обязательное; Дата-время создания - проставляется автоматически.

Выведите на странице фотографии список комментариев, отсортированный по дате-времени создания в убывающем порядке и форму для добавления комментария.

Напишите API для комментариев любым способом: Добавить комментарий; Удалить комментарий.

Коды фотографий / комментариев для запросов передавайте в url. Автором нового комментария автоматически становится текущий пользователь.

Отправляйте форму комментария AJAX-запросом: После успешного запроса выведите блок нового комментария в начале списка комментариев. После успешного запроса очистите форму.

В блоках комментариев выведите ссылки "Удалить", которые отправляют AJAX-запросы: После успешного запроса удалите блок комментария со страницы.

Права доступа в API и видимость формы и ссылок: Добавить комментарий может любой аутентифицированный пользователь. Удалить комментарий может только автор ИЛИ пользователь с правом на удаление.

exam_9's People

Watchers

Molli avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.