Данные POST только в том случае, если вы прошли аутентификацию пользователя – платформа отдыха djangoPython

Программы на Python
Гость
Данные POST только в том случае, если вы прошли аутентификацию пользователя – платформа отдыха django

Сообщение Гость »


models.py

class OpeningHours(models.Model): day_of_week = models.IntegerField(choices=((0, 'Sunday'), (1, 'Monday'), (2, 'Tuesday'), (3, 'Wednesday'), (4, 'Thursday'), (5, 'Friday'), (6, 'Saturday'))) opening_time = models.TimeField() closing_time = models.TimeField() serializer.py

class OpeningHoursSerializer(serializers.ModelSerializer): class Meta: model = OpeningHours fields = '__all__' read_only_fields = ("user",) views.py

class OpeningHoursViewSet(viewsets.ModelViewSet): queryset = OpeningHours.objects.all() serializer_class = OpeningHoursSerializer authentication_classes = [CustomAuthentication] permission_classes = [permissions.IsAuthenticatedOrReadOnly] def perform_create(self, serializer): serializer.save(user=self.request.user) authentication.py

class CustomAuthentication(authentication.BaseAuthentication): def authenticate(self, request): username = request.META.get('HTTP_USERNAME') if not username: return None try: user = User.objects.get(username=username) except User.DoesNotExist: raise exceptions.AuthenticationFailed('No such user') return (user, None) I want only authenticated user to be able to perform POST method . I have set the key as HTTP_USERNAME and value as username (which I have created in Django admin) on postman header before making a post request but I'm still getting error:

"detail": "Authentication credentials were not provided." }

How do I solve this?


Источник: https://stackoverflow.com/questions/780 ... -framework

Вернуться в «Python»