我正在尝试使用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'),
答案 0 :(得分:4)
在Django 2中,user.is_authenticated
是一个属性,因此您需要删除()
request.user.is_authenticated
答案 1 :(得分:1)
user.is_authenticated
是布尔值。这意味着它可以是True
或False
。由于它不是函数,因此在您尝试调用它时不会返回任何内容。
只需删除表示您要调用它的括号即可
if request.user.is_authenticated: