140501
This commit is contained in:
@@ -1,4 +1,7 @@
|
||||
## ## Модель
|
||||
|
||||
Этот класс добавляет автоматические поля времени создания (`created_at`), времени обновления (`updated_at`) и ссылку на автора (`author`) ко всем моделям, которые наследуют его.
|
||||
|
||||
1. **TimeStampedModel:**
|
||||
- **created_at:** DateTimeField, автоматически устанавливает дату и время создания объекта.
|
||||
- **updated_at:** DateTimeField, автоматически обновляется при каждом сохранении объекта.
|
||||
@@ -11,6 +14,7 @@
|
||||
- `image` (URLField): URL-адрес аватара пользователя.
|
||||
- `following` (SerializerMethodField): Показывает, подписан ли текущий пользователь на пользователя, представленного данным профилем.
|
||||
- Метод `get_following`: Возвращает булево значение, указывающее, подписан ли текущий пользователь на пользователя профиля.
|
||||
|
||||
2. **TagSerializer**:
|
||||
- Сериализатор для добавления тегов.
|
||||
- Содержит единственное поле `tags`, которое является списком строк.
|
||||
@@ -43,9 +47,19 @@ def favorite(self, request, id=None):
|
||||
## Маршрутизатор
|
||||
|
||||
- `DefaultRouter` из библиотеки `rest_framework.routers` автоматически создает маршруты для представлений на основе их названий и методов (например, GET, POST, PUT, DELETE). За вас обрабатывается большая часть создания URL-путей, что делает код более модульным и менее подверженным ошибкам.
|
||||
|
||||
- **`register('tags', views.TagView)`**: Регистрация маршрута для представления `TagView` из `views.py` под именем 'tags'.
|
||||
## Права доступа и разрешения
|
||||
|
||||
1. **IsAuthenticated**: Требует, чтобы пользователь был аутентифицирован для доступа к представлениям.
|
||||
|
||||
2. **IsAuthenticatedOrReadOnly**: Позволяет только чтение неаутентифицированным пользователям.
|
||||
|
||||
3. **IsOwnerOrCollaborator**:
|
||||
- Позволяет редактирование задач только владельцу задачи или соисполнителям.
|
||||
- Метод `has_object_permission` проверяет, что запросы на изменение (методы, отличные от GET, HEAD и OPTIONS) выполняются только для владельца задачи или соисполнителей.
|
||||
|
||||
4. **CanViewTodoDetail**:
|
||||
- Позволяет просмотр деталей задачи автору, соисполнителям, поставщикам, наблюдателям и избранным.
|
||||
- Метод `has_object_permission` проверяет, что пользователь является автором задачи, соисполнителем, поставщиком, наблюдателем или избранным.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user