Django 如何迎合';匿名用户';基于用户进行过滤时

Django 如何迎合';匿名用户';基于用户进行过滤时,django,django-views,Django,Django Views,我有下面的型号 class Team(models.Model): name = models.CharField(max_length=100) members = models.ManyToManyField(User, related_name="members", blank=True, null=True) 和以下视图(控制器) 当用户登录时,这非常有效,但我作为匿名用户进行测试时收到以下错误 Exception Value: int() argument must

我有下面的型号

class Team(models.Model):
    name = models.CharField(max_length=100)
    members = models.ManyToManyField(User, related_name="members", blank=True, null=True)
和以下视图(控制器)

当用户登录时,这非常有效,但我作为匿名用户进行测试时收到以下错误

Exception Value: int() argument must be a string or a number, not 'AnonymousUser'
如何满足匿名用户的需求?这是在我的模板或视图中处理的吗


任何关于如何实现这一点的建议都将不胜感激。

我想我可以通过修改我的观点来解决这个问题,比如:

def my_teams(request):
    if request.user.is_authenticated():
        my_list = Team.objects.filter(members=request.user).order_by('name')
        return render_to_response('teams/index.html', {'my_list': my_list})
    else:
        return render_to_response('teams/index.html', {})

这是不退货的最佳实践吗?我现在如何在模板中处理这个问题?

您可以使用decorator禁止匿名用户访问。如果你只想在正确的轨道上为你的另一个人归还其他东西。谢谢你——这可能会在以后派上用场。对于这个特定的视图,我很乐意使用匿名视图(我在这里留下了一些代码,以便在不混淆的情况下更容易提问)。好的,为了适应is_autenticated()=false因而不返回任何内容的情况,我在模板中添加了一个条件:
{%if user.is_active%}
。当用户通过身份验证时,这应该显示返回的内容,否则它是隐藏的,用户只能在页面上看到匿名内容。我希望这是有道理的。小心点,这和。此外,例如,您可以为anon提供其他模板,而不是在模板中附加检查。再次感谢rebus,我已重新考虑使用
user.is\u active
user.is\u authenticated()
。我的模板现在有一些其他问题。。。出于某种原因,这一页,这一页只会在我知道我未经验证时不断返回我未经验证。所有其他页面都可以。下一个障碍:)好吧,今晚我学习了堆-默认情况下,模板使用上下文实例呈现,而通用视图使用RequestContext实例呈现。我用一个RequestContext实例呈现了该模板,很明显,该模板现在已经知道了该会话。
def my_teams(request):
    if request.user.is_authenticated():
        my_list = Team.objects.filter(members=request.user).order_by('name')
        return render_to_response('teams/index.html', {'my_list': my_list})
    else:
        return render_to_response('teams/index.html', {})