私は現在、友人のリクエストを処理する好きなアプリを持っていますが、うまくいきますが、通知がうまくいかないようです。誰かが天気に関係なく他の誰かを好きになるたびに、そのユーザーが気に入っているかどうかは、2つのnotify.sendのうちの2番目のものだけを送信します。私は、 "user = get_object_or_404(User、username = user.username)"という行に問題があると推測していますが、どうやってそれを取得するのか分かりません。ここに私のコードは次のとおりです。ライン "ユーザー= get_object_or_404(ユーザー、ユーザー名ので、私は推測正常に動作します:ここでローカル変数 'user'が割り当ての問題の前に参照されています
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)
はライン「liked_user.liked_users.all中からrequest.user()の場合は、」ここでの例であります= username) "にはusernameが入っています。
@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が与えられた)を正確に取る"というエラーを受け取るので、私はユーザー名で試して渡すべきですか?大変申し訳ありませんが、どんな助けも大いに評価されるでしょう!ここで
それは助け包みなさい私の好きなアプリモデルである:
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を使用することです。 Alvarezありがとうございました! – caldf