【问题标题】:DJANGO,DRF:request id returning a NONE value instead the user objectDJANGO,DRF:request id 返回 NONE 值而不是用户对象
【发布时间】:2018-08-26 03:14:41
【问题描述】:

我想使用 DRF 在 django 中创建一个追随者选项,所以这里是我的 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'})

但每当我打开网址时

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

这是回复

{"status": "ko"}

在终端中我可以看到“NONE” 对于print(user_id) 命令

我不明白我在哪里做错了,我不认为这是让追随者发挥作用的最佳做法,如果你知道的话,请告诉我

【问题讨论】:

  • 不,我没有发送任何数据有效载荷,我通过邮递员服务使用了 httppost 方法并访问了 url

标签: django django-models django-rest-framework django-views


【解决方案1】:

您通过 url 传递 id,它在 view 函数直接可用。所以,你不想从其他地方查询它

所以,用这个,


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

【讨论】:

  • 仍然得到相同的响应
  • 终端的响应是什么?
  • NONE 并且响应与“ko”相同
  • 如果你使用print(id),终端会怎样?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-05
  • 2017-01-25
  • 2018-09-14
  • 2020-04-17
  • 1970-01-01
  • 2022-12-22
相关资源
最近更新 更多