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

Django中如何在非当前用户个人资料页隐藏编辑按钮?

解决Django个人资料页仅当前用户可见编辑按钮的问题

1. 先修改视图函数

当前的profile视图没有传递要查看的用户信息,得调整成能接收用户名参数,拿到对应的用户和Profile对象后传给模板:

from django.shortcuts import get_object_or_404
from django.contrib.auth.models import User
from .models import Profile
from django.contrib.auth.decorators import login_required

@login_required
def profile(request, username):
    # 根据用户名获取目标用户,不存在则返回404页面
    target_user = get_object_or_404(User, username=username)
    # 获取该用户关联的Profile
    target_profile = get_object_or_404(Profile, user=target_user)
    # 将目标用户、资料数据传给模板
    return render(request, 'profile.html', {
        'target_user': target_user,
        'target_profile': target_profile
    })

同时要在urls.py里更新profile的路由,添加用户名参数:

path('profile/<str:username>/', views.profile, name='profile'),

2. 调整模板的显示逻辑

在模板里加条件判断,只有当前登录用户和页面所属用户是同一个时,才渲染编辑按钮:

{% if request.user == target_user %}
<a class="btn btn-primary" href="{% url 'editprofile' %}" role="Edit">Edit Profile</a>
{% endif %}

额外提醒

  • 如果你的editprofile视图需要处理特定用户的编辑,记得给编辑路由也加上参数,并且在视图里校验用户只能编辑自己的资料;
  • 用get_object_or_404替代直接get,能避免输入不存在的用户名时直接抛出错误,体验更友好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 01:12:53