所以我目前有我的喜歡的應用程序處理朋友的請求,它工作正常,但我的通知似乎並沒有工作。無論何時,無論天氣如何,他們都喜歡其他人,他們只會發送兩個notify.send中的第二個。我認爲它的行「用戶= get_object_or_404(用戶,用戶名= user.username)」的問題,但我不知道如何繞過它。這是我的代碼:在分配問題之前引用的局部變量'用戶'
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=user.username)
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)
這裏是行「如果request.user在liked_user.liked_users.all():」,其中一個例子工作正常我相信,因爲行「用戶= get_object_or_404(用戶,用戶名=用戶名)「有用戶名。
@login_required
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
然而,在我的代碼第一位,我試圖用user.username而不是用戶名=用戶名,但我得到的錯誤「局部變量‘用戶’賦值之前引用」。這是最好的方法是什麼?我完全錯了嗎?我應該嘗試並通過用戶名,因爲當我做我得到錯誤「like_user()需要正好3個參數(2給出)」。對於django來說很抱歉,任何幫助都會被大量讚賞!
這是我喜歡的應用程序模型櫃面它可以幫助:
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
真正爲長期職位對不起了,但是我非常卡住,因爲大多數的這種被寫了一些更高級的不是我,把即時通訊有問題修復它,任何幫助將大力讚賞!
感謝
而解決方法是使用'request.user.username' –
@L。阿爾瓦雷斯謝謝你! – caldf