无法在 django 中的 html 页面上检索登录的用户特定内容



我已经成功创建了一个登录页面,我可以在注册用户后登录用户。但是除了用户的用户名和电子邮件之外,我无法检索用户数据并将其显示在用户的主页中(自从我继承了它以来,它们提出了内置的用户模型。在这里,我想在登录后在其主页上显示用户的头像。提前谢谢。

models.py

class Profile(models.Model):
user = models.OneToOneField(User)
first_Name=models.CharField(max_length=26,default=" ")
last_Name=models.CharField(max_length=26,default=" ")
gender=models.CharField(max_length=10)
father_name=models.CharField(max_length=56)
profile_pic=models.ImageField(max_length=100,upload_to='profile_pics')

@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
   if created:
      profile=Profile.objects.create(user=instance)
      instance.profile.save()
def __str__(self):
    return self.user.username

forms.py

类用户窗体(窗体。模型形式(: 密码=表单。CharField(widget=forms.密码输入(((

class Meta():
    model = User
    fields=('username','password')

类用户配置文件信息表单(表单。模型形式(:

class Meta():
    model=Profile
    fields=('first_Name','last_Name','gender','father_name','profile_pic')

views.py

@login_required
def IndexView(request,user_id):
user = User.objects.get(pk=user_id)
profile_pict=user.profile.profile_pic
return render(request,"studenthome.html",{
    'username': user.username,
    'address':user.profile.address,
    'profile_pict':profile_pict,
})

class LoginView(View):
form_class = UserForm
template_name="login.html"
def get(self,request):
    form=self.form_class(None)
    return render(request,self.template_name,{'form':form})
def post(self, request):
    password = request.POST['password']
    username = request.POST['username']
    user = authenticate(username=username, password=password)
    if user is not None:
        if user.is_active:
            if user.is_staff:
               login(request, user)
               return render(request,'teacher.html',{'username':user.username})
            else:
               login(request,user)
               return render(request,'studenthome.html',{'username':user.username})
            #    return redirect('IITMApp:index')
        else:
            return HttpResponse("Inactive user.")
    else:
        # return redirect("IITApp:login")
        return render(request, 'login.html',{
        'login_message' : 'Enter the username and password correctly',})
    return render(request, "studenthome.html")

通过查看您的代码,您只是将用户名传递给您的模板,而不是完整的用户对象。见行:

return render(request,'teacher.html',{'username':user.username})

如果相反,如果这样,则将其传递为:

return render(request,'teacher.html',{'user':user})

你也可以使用这里给出的 Django 的默认登录函数。

您将能够访问模板中用户模型的所有字段。

如果这不起作用,请告诉我。

最新更新