You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中profile.html展示全部客户 如何仅获取当前已登录客户数据

问题解决步骤

当前问题根因为视图默认查询了全量客户数据,未过滤当前登录用户对应的条目,按以下步骤修改即可:

1. 调整模型关联(未关联Django用户系统时需要)

修改models.py,给Customer模型添加和Django默认用户表的关联字段:

from django.contrib.auth.models import User
from django.db import models

class Customer(models.Model):
    # 原有字段全部保留
    first_name = models.CharField(max_length=50)
    last_name = models.TextField(max_length=50)
    phone = models.CharField(max_length=15)
    email = models.EmailField(max_length=100 ,default='')
    password = models.CharField(max_length=500) 
    # 新增一对一关联字段
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='customer_profile')

修改完成后执行python manage.py makemigrations、python manage.py migrate完成数据库迁移。如果你的项目已经将Customer设置为自定义认证用户模型,可跳过本步骤。

2. 重写profile视图逻辑

修改views.py代码,先校验用户登录状态,再过滤获取当前用户对应的客户数据:

from django.contrib.auth.decorators import login_required

@login_required
def profile(request):
    # 仅查询当前登录用户关联的Customer数据
    # 如果Customer是自定义认证模型,直接写data = request.user即可
    data = Customer.objects.filter(user=request.user).first()
    return render(request,'profile.html' ,{'data':data})

3. 简化模板渲染逻辑

现在返回的data是单个客户对象,不需要循环遍历,修改profile.html代码:

{% if data %}
<h2>{{ data.email }}</h2>
<!-- 其余需要展示的字段直接用{{ data.字段名 }}调用即可 -->
{% endif %}

内容的提问来源于stack exchange,提问作者ramnath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 13:42:04