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

Django权限问题:登录用户仅查看自身保存信息的实现求助

解决Django用户只能查看自身Locker数据的问题

问题根源

你当前的视图使用Locker.objects.all()会查询所有用户的Locker记录,所以登录用户会看到其他人的数据。

解决方案

1. 修改视图过滤当前用户的数据

在user_locker视图里,把查询语句改成过滤当前登录用户的记录,同时加上登录验证,确保只有登录用户能访问这个页面:

# 先导入login_required装饰器
from django.contrib.auth.decorators import login_required

@login_required
def user_locker(request):
    # 过滤出当前登录用户的Locker记录
    saved_info = Locker.objects.filter(user=request.user)
    all_saved_info = {'saved_info': saved_info}
    return render(request, 'pwdbank/user_locker.html', all_saved_info)

2. 优化模型(可选但推荐)

你的Locker模型里user字段设置了null=True,这意味着可以创建不关联任何用户的Locker记录,不符合你的需求。建议去掉这个参数,确保每个Locker都必须属于一个用户:

class Locker(models.Model):
    # 去掉null=True,确保每条记录都关联用户
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    site_name = models.CharField(max_length=55)
    site_url = models.URLField(max_length=55)
    username = models.CharField(max_length=55)
    email = models.EmailField(max_length=100)
    password = models.CharField(max_length=55)
    created_date = models.DateField(auto_now_add=True)
    updated_date = models.DateField(auto_now=True)
    
    def __str__(self):
        return f'{self.site_name}'

修改后执行数据库迁移:

python manage.py makemigrations
python manage.py migrate

补充说明

  • 加上@login_required后,未登录用户访问该页面会自动跳转到登录页(需在settings里配置LOGIN_URL)。
  • 过滤后的saved_info仅包含当前登录用户的Locker数据,模板循环展示时只会显示自己的内容。

内容的提问来源于stack exchange,提问作者Deyemi-Hay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 11:25:24