Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django编辑配置文件-';布尔';对象不可调用_Django_Templates_Django Models_Django Forms - Fatal编程技术网

Django编辑配置文件-';布尔';对象不可调用

Django编辑配置文件-';布尔';对象不可调用,django,templates,django-models,django-forms,Django,Templates,Django Models,Django Forms,所以我只是按照教程为用户创建了一个配置文件,并允许他们编辑它,但当我去访问编辑页面时,我发现这个错误,“bool”对象是不可调用的 File "C:\Users\...\account\userprofile\views.py", line 64, in profile_edit_view if request.user.is_authenticated() and request.user.id == user.id: TypeError: 'bool' object is not ca

所以我只是按照教程为用户创建了一个配置文件,并允许他们编辑它,但当我去访问编辑页面时,我发现这个错误,
“bool”对象是不可调用的

File "C:\Users\...\account\userprofile\views.py", line 64, in profile_edit_view
   if request.user.is_authenticated() and request.user.id == user.id:
TypeError: 'bool' object is not callable
models.py:

from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.conf import settings


class UserProfile(models.Model):
    user = models.OneToOneField(User, related_name="user", on_delete=models.CASCADE)
    photo = models.ImageField(upload_to = "account/userprofile/photos", verbose_name="Profile Picture", max_length=255, null=True, blank=True)
    location = models.CharField(max_length=100, default='', blank=True)
    website = models.URLField(default='', blank=True)
    bio = models.TextField(default='', blank=True)


@receiver(post_save, sender=User)
def create_profile(sender, **kwargs):
    user = kwargs["instance"]
    if kwargs["created"]:
        user_profile = UserProfile(user=user)
        user_profile.save()
post_save.connect(create_profile, sender=User)
forms.py

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserChangeForm

class ProfileEditForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ['first_name', 'last_name', 'email']
views.py

def profile_edit_view(request, pk):
    # querying the User object with pk from url
    user = User.objects.get(pk=pk)

    # prepopulate UserProfileForm with retrieved user values from above.
    user_form = ProfileEditForm(instance=user)

    # The sorcery begins from here, see explanation below
    ProfileInlineFormset = inlineformset_factory(User, UserProfile, fields=('location', 'website', 'bio'))
    formset = ProfileInlineFormset(instance=user)

    if request.user.is_authenticated() and request.user.id == user.id:
        if request.method == "POST":
            user_form = ProfileEditForm(request.POST, request.FILES, instance=user)
            formset = ProfileInlineFormset(request.POST, request.FILES, instance=user)

            if user_form.is_valid():
                created_user = user_form.save(commit=False)
                formset = ProfileInlineFormset(request.POST, request.FILES, instance=created_user)

                if formset.is_valid():
                    created_user.save()
                    formset.save()
                    return HttpResponseRedirect('/profile/')

        return render(request, "account/account_update.html", {
            "noodle": pk,
            "noodle_form": user_form,
            "formset": formset,
        })
    else:
        raise PermissionDenied
是布尔值,因此不应将其作为函数调用。删除括号,它将按预期工作:

if request.user.is_authenticated and request.user.id == user.id: