Как получить ID залогиненного пользователя и передать его в бэкенд или установить через бэкенд. Djano, DRF, Vue.js, Djoser

Итак, когда пользователь отправляет форму через frontend (Vue.js), я хочу иметь возможность установить атрибут created_by в backend. Каков наилучший способ добиться этого?

Виды

class ProjectView(generics.RetrieveAPIView):
    queryset = Project.objects.order_by('-created_at')

    def get(self, request):
        queryset = self.get_queryset()
        serializer = ProjectsSerializer(queryset, many=True)
        return Response(serializer.data)
    
    def post(self, request):
        if request.method == 'POST':
            serializer = ProjectsSerializer
            if serializer.is_valid():
                serializer.save()
                return JsonResponse(serializer.data, status=201)
        return JsonResponse(serializer.errors, status=400)

Сериализатор

class ProjectsSerializer(serializers.ModelSerializer):

    interest_category = serializers.StringRelatedField()
   
    class Meta:
        model = Project
        fields = (
            'project_title',
            'project_description',
            'interest_category',
            'created_by',
            'created_at',
            'updated_at',
        )

Данные, которые я передаю из Frontend

project_title: this.project_title,
project_description: this.project_description,
interest_category: this.interest_category,

У меня есть токен, сохраненный в localStorage, но я не знаю, как получить ID текущего вошедшего пользователя и передать его в бэкенд или установить в бэкенде. Любая помощь будет высоко оценена!

Каким образом лучше всего установить created_by пользователя, отправляющего/запрашивающего запрос в бэкенде?

DRF делает работу за вас, предполагая, что вы используете Cookie auth или token auth, вы можете получить пользователя, переопределив get_object :

def get_object(self):
  queryset = self.get_queryset()
  obj = get_object_or_404(queryset, user=self.request.user)
  return obj

https://www.cdrf.co/3.13/rest_framework.generics/RetrieveAPIView.html#get_object

Вернуться на верх