【问题标题】:why do i keep getting this error( Field 'id' expected a number but got ''. ) each time users like a post from their own timeline?为什么每次用户喜欢他们自己时间轴上的帖子时,我总是收到这个错误(字段'id'期望一个数字但得到''。)?
【发布时间】:2021-06-26 21:57:44
【问题描述】:

这是我希望用户能够喜欢他们的帖子的用户帐户视图,要解决这个问题确实是一个挑战。将不胜感激。

def account_view(request, *args, **kwargs):
    """
    - Logic here is kind of tricky
        is_self
        is_friend
            -1: NO_REQUEST_SENT
            0: THEM_SENT_TO_YOU
            1: YOU_SENT_TO_THEM
    """
    context = {}
    user_id = kwargs.get("user_id")
    try:
        account = User.objects.get(pk=user_id)
    except:
        return HttpResponse("Something went wrong.")
    if account:
        context['id'] = account.id
        context['username'] = account.username
        context['bio'] = account.bio
        context['get_full_name'] = account.get_full_name
        context['email'] = account.email
        context['profile_pic'] = account.profile_pic.url
        context['cover_image'] = account.cover_image.url
        context['city'] = account.city
        context['country'] = account.country
        context['gender'] = account.gender
        context['hide_email'] = account.hide_email

        post_id = request.GET.get("likeId", "")
        try:
            post_id = Post.objects.get(pk=post_id)
        except Post.DoesNotExist:
            liked= False
            like = Like.objects.filter(user=user, post=post)
   


        try:
            post_list = Post.objects.filter(user_name=account)
        except Post.DoesNotExist:
            post_list = Post(user_name=account)
            save.post_list()
        posts = post_list.all()
        context['posts'] = posts

这是我的点赞视图,我怎样才能让用户和朋友能够从他们自己的个人资料或时间线点赞他们的帖子?

def like(request):
    post_id = request.GET.get("likeId", "")
    user = request.user
    post = Post.objects.get(pk=post_id)
    liked= False
    like = Like.objects.filter(user=user, post=post)
    if like:
        like.delete()
    else:
        liked = True
        Like.objects.create(user=user, post=post)
    resp = {
        'liked':liked
    }
    response = json.dumps(resp)
    return HttpResponse(response, content_type = "application/json")

【问题讨论】:

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


    【解决方案1】:

    发生错误的原因可能是likeId 作为空字符串http://url_path?likeId= 发送,或者(很可能)因为它根本不存在于request.GET 中。

    您已使用request.GET.get("likeId", ""),因此默认值为""。 接下来,代码运行post_id = Post.objects.get(pk=post_id)。禁止将字符串传递给pk 过滤器,因此会出现错误。因此,请验证 likeId 确实在请求中发送,并且它是一个实际的 Post.id(检查可能的拼写错误)。 也许您打算改用request.POST

    通常,在您显然确实需要一个值的情况下使用 dict.get() 是个坏主意。此外,应该进行一些验证以确保likeId 是一个有效的整数。我建议使用表单验证输入参数,但也可以使用手动方法。

    try:
        post_id = int(request.GET["likeId")
    except (KeyError, ValueError):
        return HttpResponse('Provide a valid likeId integer', status_code=404)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-11
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      • 2018-07-27
      • 2021-01-22
      • 2017-03-12
      • 1970-01-01
      相关资源
      最近更新 更多