Как получить 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