问题描述
我是Django的新手,正在尝试显示每个用户的个人资料。到目前为止,我已经完成了登录,注册系统。用户还可以更新其个人资料,但是登录用户单击其他用户的用户名后,我真的无法显示每个用户的个人资料。我想知道是否可以对每个配置文件的主键/ ID进行某些操作,并使用它来访问每个配置文件。一点帮助将不胜感激!
这是我的代码:
个人资料页面的网址:
path('profile/',views.userprofile,name='userprofile'),
我用于查看个人资料的视图:
@login_required
def userprofile(request):
Post = post.objects.order_by('-created')
return render(request,'social_media/profile.html',{'Post':Post,'Profile':Profile})
用户个人资料的模型:
class profile(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE)
desc = models.CharField(max_length=1000)
pfp = models.FileField(default='images/profile.jpg',upload_to='profile_pics/',blank=True)
cover = models.FileField(default='images/profile.jpg',upload_to='cover_pics/',blank=True)
将我带到个人资料网址的链接:
<div class="user-pfp-name">
<a href="{% url 'userprofile' %}">
<img src="{% static 'social_media/images/profile.jpg' %}" style="height: 35px; width: auto; border-radius: 100%;" alt="">
{{ i.user.first_name }}
{{ i.user.last_name }}
</a>
</div>
最后是我的个人资料页面:
<div class="profile">
<div class="coverpad">
{% if Profile.cover %}
<img src="{{ Profile.cover.url }}">
{% endif %}
</div>
<div class="profilepic">
{% if Profile.pfp %}
<img src="{{ Profile.pfp.url }}" height="140px">
{% endif %}
</div>
<div class="profile-middle">
<div class="profile-username">{{ user.first_name }} {{ user.last_name }}</div>
{% if Profile.desc %}
<div class="profile-desc"></div>
{% endif %}
</div>
</div>
解决方法
您必须将用户ID传递给您的视图函数。例如:
@login_required
def userprofile(request,user_id):
user = User.object.get(id=user_id)
return render(request,'social_media/profile.html',{'user': user})
urls.py
path('profile/<int:user_id>',views.userprofile,name='userprofile'),
链接到个人资料:
<a href="{% url 'userprofile' user_id=user.id %}">
然后,您的个人资料页面将如下所示:
<div class="coverpad">
{% if user.cover %} #or user.profile.cover,i'm not sure
<img src="{{ user.cover.url }}"> #or user.profile.cover.url
{% endif %}
</div>
等等。
,成功了,我只是改变了看法:
@login_required
def userprofile(request,user_id=None):
if user_id:
user = User.objects.get(id=user_id)
Post = post.objects.order_by('-created')
return render(request,{'Post':Post,'User':user})
else:
user = User.objects.get(id=user_id)
Post = post.objects.order_by('-created')
return render(request,'User':user})
因此,基本上,如果用户请求一个ID,我会将其带到请求的用户的ID配置文件中;如果用户(已登录)想要查看其自己的配置文件,则将其带至他/她的ID配置文件中。