2017-10-03 11 views
0

私は練習のためだけにブログを作成していますが、最近私はビューのカウンタ機能を追加しました。匿名ユーザーが投稿を開くdjangoはpost_detailビューでユーザー名を要求していますビューには、次のとおりです。djangoの匿名ユーザー数ビュー

def post_detail(request, post_id): 
    post = Post.objects.get(id=post_id) 
    if UserSeenPosts.objects.filter(post=post, user=request.user).exists(): 
     print "all ready" 
    else: 
     post.views += 1 
     post.save() 
     UserSeenPosts.objects.create(user=request.user, post=post) 
    return render(request, 'blog/detail.html', {'Post': Post.objects.get(id=post_id)}) 

UserSeenPostsモデル:

class UserSeenPosts(models.Model): 
    user = models.ForeignKey(User, related_name='seen_posts') 
    post = models.ForeignKey(Post) 

だから、guest1が/ guest2、これは避けるようにシリアル化する必要がある重複した名前のような匿名ユーザーの名前を付けることができますジャンゴ

答えて

1

ユーザーが認証されているかどうかを確認する必要があります。

if request.user.is_authenticated(): 
    UserSeenPosts.objects.create(user=request.user, post=post) 
+0

私は知っていますが、これはビューを数えません。 –

+0

ユーザーがログインしていない場合は、電話をかけることはできません。 UserSeenPosts.objects.create(user = None、post = post)。ログインしているかどうかに関係なく、UserSeenPosts.objects.create(user = request.user、post = post)モデルのフィールドユーザーをNULL可能にします。 –

+0

あなたの返事に感謝しますが、更新された質問を見ることができます:) –

関連する問題