Skip to content

Latest commit

 

History

History
52 lines (33 loc) · 4.75 KB

task-5.md

File metadata and controls

52 lines (33 loc) · 4.75 KB

Домашнее задание 5

Загрузка картинок и обработка AJAX запросов

Целью домашнего задания является добавления функционала аватарок (загрузка картинок) и обработка AJAX запросов (лайки).

1. Загрузка картинок

Для хранения картинок нужно использовать встроенные инструменты Django, а именно django.db.models.ImageField для хранения URL картинки в модели и django.forms.ImageField для описания поля в форме. Django хранит загруженные файлы на диске в директории settings.MEDIA_ROOT. В нашем случае в настройке settings.MEDIA_URL и в конфиге nginx должен быть прописать путь к директории media вашего проекте. Для отображения аватарки пользователя достаточно будет вставить в тег <img src="{{ MEDIA_URL }}{{ user.avatar }}">.

2. Необходимыe AJAX запросы

  • Лайк (дизлайк) вопроса. На сервер передаются параметры: id вопроса, тип (лайк / дизлайк). Возвращается: новый рейтинг вопроса или код ошибки.
  • Галочка правильный ответ. На сервер передается ID вопроса и ID правильного ответа. Необходимо проверить что только автор вопроса может выбирать правильный ответ.

3. Обработка AJAX запросов

Так как отображение ошибок при AJAX запросах затруднительно, желательно не дать (на уровне интерфейса) возможности пользователю делать неправильные запросы. Например, если пользователь уже лайкал данный вопрос - то скрыть или отключить кнопку лайка. Скрыть выбор правильного ответа для не авторов.

В отличие от остальных страниц, в ответ на AJAX запрос сервер должен возвращать JSON документ. Для этого необходимо создавать объект django.http.HttpResponse самостоятельно с Content-Type: application/json и соответсвующим телом ответа, либо воспользоваться вспомогательным объектом django.http.JsonResponse.

Для отправки AJAX запросов в браузере можно использовать jQuery. Необходимо учесть, что Django ожидает получить с каждым запросом csrf_token, поэтому необходимо добавить его в данные каждого AJAX запроса.

4. Баллы

Максимальные баллы за ДЗ - 11 баллов

Загрузка и отображение аватарок пользователей - 4:

  • заливка картинок в uploads - 2;
  • отображение картинок из uploads - 2.

Страница редактирования профиля - 2:

  • общее - 1;
  • отображение ошибок - 1.

Лайки вопросов и ответов - 2:

  • общее - 1;
  • AJAX - 1.

Отметка “правильный ответ” - 2:

  • общее - 1;
  • AJAX - 1.

Проверка авторизации, csrf, метода запроса, авторства - 1.

5. Полезные ссылки