【问题标题】:count views for anonymous users in django计算 django 中匿名用户的浏览量
【发布时间】:2017-10-03 15:34:09
【问题描述】:

我正在创建一个博客只是为了练习,我最近添加了视图计数器功能问题是当匿名用户打开帖子时 django 引发错误,因为在 post_detail 视图中我请求用户名这是视图:

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)

所以 django 可以给匿名用户的名字,比如 guest1 / guest2 并且应该序列化以避免重复的名字

【问题讨论】:

    标签: django


    【解决方案1】:

    您必须检查用户是否经过身份验证。

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

    【讨论】:

    • 我知道,但这不算视图
    • 如果用户未登录,则无法调用。 UserSeenPosts.objects.create(user=request.user, post=post) 如果您不介意是否登录:UserSeenPosts.objects.create(user=None, post=post)。并使模型中的字段用户可为空。
    • 感谢您的回复,但您能看到更新后的问题吗:)
    • 如果您只想将所有匿名用户映射到一个对象。您可以为所有匿名对象创建一个对象。称之为“客人 1”。然后检查用户是否登录并调用适当的对象?
    • 谢谢你我讨厌这个项目不适合我谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 2023-02-13
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    相关资源
    最近更新 更多