Архив категории ‘Задачи по Python’

Проект API

Ваша задача — дописать код и привести его в соответствие с документацией: добавить недостающие модели в приложении posts, создать адреса и представления для обработки запросов в приложении api. Документация — это ваше техническое задание. Например, в проекте должна быть описана модель Follow, в ней должно быть два поля — user (кто подписан) и following (на кого подписан). Для этой модели в документации […]

Фильтрация, сортировка и поиск

При публикации одной из своих дневниковых записей пользователь @leo по ошибке вставил в текст поста свой почтовый индекс. В какой именно пост попала эта информация — он не помнит, но очень хочет удалить её из текста. Помогите пользователю решить эту проблему и найти нужный пост через API. Почтовые индексы России состоят из 6 цифр. Такую […]

Пагинация в API

Подключите к API Yatube стандартную постраничную пагинацию на уровне проекта. Пусть API возвращает по 10 объектов на страницу. Добавьте два параметра в словарь настроек проекта REST_FRAMEWORK.

Пагинация в API. 2 задача

Измените используемую по умолчанию структуру ответа при пагинации. Уберите поля next и previous из выдачи, а название ключа results измените на response. Создайте файл pagination.py в директории приложения api и опишите в нём собственный пагинатор-класс CustomPagination. В классе CustomPagination переопределите метод get_paginated_response и уберите поля next и previous из выдачи. Название ключа results измените на […]

Throttling: ограничение количества запросов. 1 задача

В проекте Yatube ограничьте число запросов к API на уровне проекта:- для анонимных пользователей — не более десяти в минуту;- для аутентифицированных пользователей — не более ста в минуту. В файле настроек проекта settings.py добавьте ключи DEFAULT_THROTTLE_CLASSES и DEFAULT_THROTTLE_RATES с необходимыми параметрами в словарь REST_FRAMEWORK.

Throttling: ограничение количества запросов

Запретите любые запросы к публикациям в обеденное время (с 13:00 до 14:00). Опишите в приложении api тротлинг-класс LunchBreakThrottle и подключите его к соответствующему view-классу публикаций. Файл throttling.py:

Проверка прав: Permissions. 2 задача

В приложении api опишите и примените пермишен, который не даст пользователю удалить или отредактировать чужие публикации. Запрашивать список всех публикаций или отдельную публикацию может любой пользователь. Создавать новую публикацию может только аутентифицированный пользователь. Безопасные запросы GET, OPTIONS и HEAD должны быть разрешены всем, даже анонимам. При запросах на изменение или удаление публикации проверьте, совпадает ли автор поста […]

Проверка прав: Permissions

В тренажёр загружена облегчённая версия проекта Yatube; она реализована на дженериках.Настройте права доступа так, чтобы неаутентифицированные пользователи могли только читать публикации; все остальные операции должны быть доступны только пользователям с действующим токеном. Подсказка: В DEFAULT_PERMISSION_CLASSES словаря REST_FRAMEWORK установите уровень доступа на уровне проекта. В описании вью-классов для публикаций добавьте атрибут permission_classes и укажите в нём […]

Проект YaMDb

Проект YaMDb собирает отзывы (Review) пользователей на произведения (Titles). Произведения делятся на категории: «Книги», «Фильмы», «Музыка». Список категорий (Category) может быть расширен администратором (например, можно добавить категорию «Изобразительное искусство» или «Ювелирка»). Сами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм или послушать музыку. В каждой категории есть произведения: книги, фильмы или музыка. Например, в категории «Книги» могут быть произведения «Винни-Пух и все-все-все» и «Марсианские хроники», […]

CRUD для Yatube

Задача В проекте api_yatube есть приложение posts с описанием моделей Yatube. Вам нужно реализовать API для всех моделей приложения. Обычно всю логику API выносят в отдельное приложение: при иной организации кода работать в большом проекте со множеством приложений будет неудобно. Добавьте в проект новое приложение с именем "api" и реализуйте всю логику именно там. API должен быть доступен только аутентифицированным […]