Django:显示每个用户的个人资料

问题描述

我是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配置文件中。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...