django中的关注者系统“布尔不可调用”

时间:2019-06-15 03:15:49

标签: python django

我正在尝试使用django创建关注者系统,并且遇到了这个问题,有人可以帮我解决这个问题,还是给我一些有关使用django创建关注者系统的建议。

回溯如下

  

跟踪:

     

文件“ C:\ Users \ Mustafa   Lakhani \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ core \ handlers \ exception.py“   在内部     34. response = get_response(request)

     

文件“ C:\ Users \ Mustafa   Lakhani \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ core \ handlers \ base.py“   在_get_response中     126. response = self.process_exception_by_middleware(e,request)

     

文件“ C:\ Users \ Mustafa   Lakhani \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ core \ handlers \ base.py“   在_get_response中     124. response = wrapd_callback(request,* callback_args,** callback_kwargs)

     

文件“ C:\ Users \ Mustafa   Lakhani \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ views \ generic \ base.py“   鉴于     68. return self.dispatch(request,* args,** kwargs)

     

文件“ C:\ Users \ Mustafa   Lakhani \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ views \ generic \ base.py“   在派遣中     88. return handler(请求,* args,** kwargs)

     

获取文件“ D:\ sb \ blog \ views.py”     186. if request.user.is_authenticated():

     

异常类型:/ user / mustafalakhani /关注异常的TypeError   值:'bool'对象不可调用

下面给出了代码

models.py

class Profile(models.Model):
    user=models.OneToOneField(User, on_delete=models.CASCADE)
    image=models.ImageField(default='default.jpg',upload_to='profile_pics',blank=True)
    description=models.TextField(max_length=200, blank=True)
    following = models.ManyToManyField(User, related_name='followed_by', blank=True)
    def __str__(self):
        return f'{self.user.username} Profile'

    def saveimg(self):
        super().save()

        img=Image.open(self.image.path)

        if img.height>300 or img.width>300:
            output_size=(300,300)
            img.thumbnail(output_size)
            img.saveimg(self.image.path)

views.py

class UserFollowView(View):
    def get(self, request, username, *args, **kwargs):
        toggle_user=get_object_or_404(User,username__iexact=username)
        if request.user.is_authenticated():
            user_profile, created=Profile.objects.get_or_create(request.user)
            if toggle_user in user_profile.following.all():
                user_profile.following.remove(toggle_user)
            else:
                user_profile.following.add(toggle_user)
        return HttpResponseRedirect(home)

urls.py

path('user/<str:username>/follow', UserFollowView.as_view(),name='follow_user'),

2 个答案:

答案 0 :(得分:4)

在Django 2中,user.is_authenticated是一个属性,因此您需要删除()

request.user.is_authenticated

答案 1 :(得分:1)

user.is_authenticated是布尔值。这意味着它可以是TrueFalse。由于它不是函数,因此在您尝试调用它时不会返回任何内容。

只需删除表示您要调用它的括号即可

if request.user.is_authenticated: