Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 好友请求和确认问题_Python_Django - Fatal编程技术网

Python 好友请求和确认问题

Python 好友请求和确认问题,python,django,Python,Django,所以我现在有一个处理好友请求的likes应用程序,它运行良好,但我的通知似乎不起作用。无论用户是否喜欢其他人,只要有人喜欢其他人,它只会发送两个通知中的第二个通知。发送 这是我的密码: View.py def like_user(request, id): pending_like = get_object_or_404(User, id=id) user_like, created = UserLike.objects.get_or_create(user=request.us

所以我现在有一个处理好友请求的likes应用程序,它运行良好,但我的通知似乎不起作用。无论用户是否喜欢其他人,只要有人喜欢其他人,它只会发送两个通知中的第二个通知。发送

这是我的密码:

View.py

def like_user(request, id):
    pending_like = get_object_or_404(User, id=id)
    user_like, created = UserLike.objects.get_or_create(user=request.user)
    user = get_object_or_404(User, username=request.user)
    liked_user, like_user_created = UserLike.objects.get_or_create(user=user)
    if pending_like in user_like.liked_users.all():
        user_like.liked_users.remove(pending_like)
    elif request.user in liked_user.liked_users.all():
        user_like.liked_users.add(pending_like)
        notify.send(request.user, 
                        #action=request.user.profile, 
                    target=request.user.profile, 
                    recipient=pending_like,
                    verb='sent you a friend request view'),
    else:
        user_like.liked_users.add(pending_like)
        notify.send(request.user, 
                        #action=request.user.profile, 
                    target=request.user.profile, 
                    recipient=pending_like,
                    verb='accepted your friend request view')
    return redirect("profile", username=pending_like.username)
models.py

class UserLikeManager(models.Manager):
    def get_all_mutual_likes(self, user, number):
        try:
            qs = user.liker.liked_users.all().order_by("?")
        except:
            return []
        mutual_users = [][:number]
        for other_user in qs:
            try:
                if other_user.liker.get_mutual_like(user):
                    mutual_users.append(other_user)
            except:
                pass
        return mutual_users



class UserLike(models.Model):
    user = models.OneToOneField(User, related_name='liker')
    liked_users = models.ManyToManyField(User, related_name='liked_users', blank=True)

    objects = UserLikeManager()


    def __unicode__(self):
        return self.user.username

    def get_mutual_like(self, user_b):
        i_like = False
        you_like = False
        if user_b in self.liked_users.all():
            i_like = True
        liked_user, created = UserLike.objects.get_or_create(user=user_b)
        if self.user in liked_user.liked_users.all():
            you_like = True 
        if you_like and i_like:
            return True
        else:
            return False
正如您在my views.py中所看到的,我有一个带有一个elif的if语句,但是它似乎从未接收到该elif并直接转到其他语句,因此在我的通知中,我总是收到“accepted your friend request view”消息。我似乎无法解决这个问题,如果有人能看到故障,请让我知道

当我在我的个人资料应用程序中使用它显示一个按钮,显示“确认好友请求”时,它似乎起作用了。以下是我的个人资料代码:

view.py

 def profile_view(request, username):
    user = get_object_or_404(User, username=username)
    liked_user, like_user_created = UserLike.objects.get_or_create(user=user)
    do_they_like = False
    if request.user in liked_user.liked_users.all():
        do_they_like = True  
        context = {
            "do_they_like": do_they_like
                    }
        return render(request, "profiles/profile_view.html", context)

谢谢

下面这行中的问题

user = get_object_or_404(User, username=request.user)
user = get_object_or_404(User, pk=request.user.pk)
用下面的行更新上面的内容

user = get_object_or_404(User, username=request.user)
user = get_object_or_404(User, pk=request.user.pk)

您好,谢谢您的评论,但是它似乎不起作用,我在上面添加了一些代码,显示了when liked_user.liked_users.all():似乎起作用。