DJANGO, DRF: идентификатор запроса, возвращающий значение NONE вместо пользовательского объекта - PullRequest
0 голосов
/ 26 августа 2018

Я хочу создать опцию последователя в django, используя DRF, так что здесь мой models.py

class Connect(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, unique = True, related_name = 'rel_from_set',on_delete=models.CASCADE)
    following = models.ManyToManyField(settings.AUTH_USER_MODEL,  related_name = 'follwed_by')
    def __str__(self):
        return str(self.following.all().count())

urls.py

url(r'^conn/(?P<id>\d+)', ConnectApi),

serializer.py

class ConnectSerializer(serializers.ModelSerializer):
    class Meta:
        model=Connect
        fields=('user','following')

views.py

@api_view(['GET','POST'])
def ConnectApi(request,id):
    user_id=request.POST.get('id')
    print(user_id)
    # user_id=request.GET['id']
    # action=request.POST.get('action')
    if user_id :
    # if user_id and action:

        try:
            user1=User.objects.get(id=user_id)
            if user1 :
                Connect.objects.get_or_create(user=request.user,
                                                following=user1)
            else:
                Connect.objects.filter(user=request.user,
                                        following=user).delete()
            return JsonResponse({'status':'ok'})
        except:
            return JsonResponse({'status':'ki'})
    return JsonResponse({'status':'ko'})

но всякий раз, когда я запускал URL

http://127.0.0.1:8000/connect/conn/2

это ответ

{"status": "ko"}

и в терминале я мог видеть "НЕТ" для print(user_id) команды

Я не понимаю, где я совершил ошибку, и я не думаю, что это лучший способ заставить подписчиков функционировать, если вы знаете кого-то, пожалуйста, дайте мне знать

1 Ответ

0 голосов
/ 26 августа 2018

Вы передаете id через URL-адрес, и он напрямую доступен внутри функции просмотра . Таким образом, вы не хотите запрашивать его откуда-то еще

Итак, используйте это,


@api_view(['GET', 'POST'])
def ConnectApi(request, id):
    <b>user_id = id</b>
    print(user_id)
    # your code
...