Я хочу реализовать функцию в своем API для отдыха, чтобы пользователи могли добавлять конкретные ключевые слова для новостной ленты.
, поэтому, если пользователи отправляют запрос с ключевым словом внутри, объект пользователя будет добавлен по предопределенному ключевому слову (предопределено в базе данных).
Я пробовал это с этим кодом, но всегда, если я пытаюсь смоделировать почтовый запрос с почтальоном, и у меня есть эта проблема:
будет добавлено ключевое слово, но не предоставленные данные json, это просто пустая строка, а запрос на публикацию возвращает также пустое ключевое слово ...
Я надеюсь, что вы сможете мне помочь, и, возможно, вы могли бы дать мне совет, как просто разрешить статические ключевые слова, которые уже определены, и разрешить пользователю иметь ключевое слово только один раз (без двойных ключевых слов с одинаковым значением)
Сделано с такими заголовками:
[{"key":"Content-Type","value":"application/json","description":""}]
[{"key":"Authorization","value":"Token xxxxxxx","description":""}]
Body:
{
"name": "keyword1"
}
Авторизация работает, поэтому пользователь добавил пустое ключевое слово
Я очень новичок в django, и я делаю этот проект, чтобы улучшить свои навыки, поэтому, пожалуйста, будьте снисходительны ко мне :). Возможно, это совершенно неправильно, дайте мне несколько советов, чтобы решить мою проблему
Это фрагменты для реализации:
models.py
class Keywords(models.Model):
name = models.CharField(max_length=200)
user = models.ManyToManyField(User)
def __str__(self):
return self.name
serializers.py
class KeywordSerializer(serializers.Serializer):
class Meta:
model = Keywords
fields = ('id', 'name', 'user')
def create(self, validated_data):
keyword = Keywords(**validated_data)
keyword.save()
keyword.user.add(self.context['request'].user)
return keyword
views.py
class KeywordAPI(generics.RetrieveAPIView):
permission_classes = [permissions.IsAuthenticated, ]
serializer_class = KeywordSerializer
def post(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
keyword = serializer.save()
return Response({
"name": KeywordSerializer(keyword, context=self.get_serializer_context()).data,
})