我已经成功创建了一个登录页面,我可以在注册用户后登录用户。但是除了用户的用户名和电子邮件之外,我无法检索用户数据并将其显示在用户的主页中(自从我继承了它以来,它们提出了内置的用户模型。在这里,我想在登录后在其主页上显示用户的头像。提前谢谢。
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 的默认登录函数。
您将能够访问模板中用户模型的所有字段。
如果这不起作用,请告诉我。