I am a beginner developer django. I do site foodgram. Here you can publish recipes, subscribe to authors, add recipes to your shopping list. I try install filtering requests for users using bu shopping_cart and favorite as filterset. But I cant to install exception for anonymous.For request /api/recipes/?is_in_shopping_cart appear all recipes. But must be error 401 Unautorized
My code
filter
class CustomFilters(filters.FilterSet):
tags = filters.ModelMultipleChoiceFilter(field_name='tags__slug',
to_field_name='slug',
queryset=Tag.objects.all())
author = filters.NumberFilter(field_name='author')
is_favorited = filters.BooleanFilter(field_name='is_favorited',
method='get_is_favorited')
is_in_shopping_cart = filters.BooleanFilter(
field_name='is_in_shopping_cart',
method='get_is_in_shopping_cart'
)
def get_is_favorited(self, queryset, name, value):
user = self.request.user
if (user.is_authenticated and value is True
and name == 'is_favorited'):
return queryset.filter(recipes_favorite_recipes__user=user)
return Response(status=status.HTTP_401_UNAUTHORIZED)
def get_is_in_shopping_cart(self, queryset, name, value):
user = self.request.user
if (
user.is_authenticated and value is True
and name == 'is_in_shopping_cart'
):
return queryset.filter(recipes_shopping_cart_recipes__user=user)
return Response(status=status.HTTP_401_UNAUTHORIZED)
class Meta:
model = Recipes
fields = ['tags', 'author', "is_in_shopping_cart", "is_favorited"]
if I I remove the method condition in the filter and leave only
Response(status=status.HTTP_401_Unauthorized) with an anonymous request, recipes still appear and an error appears on the site. I will glad any advice