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

如何在Django中限制视图仅允许所属用户与超级管理员访问

解决方案

第一步:修改views.py逻辑(核心校验,必须放在服务端视图层才安全)

仅在HTML模板做权限限制很容易被绕过,需要先在视图层做服务端校验,修改后代码如下:

from django.http import HttpResponse

@login_required
def individual_sum(request, user_name_id):
    # 新增权限校验:仅超级管理员 或 ID和路径传入的user_name_id一致的登录用户可访问
    if not (request.user.is_superuser or request.user.id == user_name_id):
        # 无权限时返回403状态+提示,也可以自定义渲染无权限页面
        return HttpResponse("You are not able to view this page!", status=403)

    # 原有查询逻辑保留不变
    ... lots of query


    context = {
        ... lots of contexts
        # 如果要在模板里继续做判断,可新增这个参数传入模板
        # 'user_name_id': user_name_id
    }
    
    return render(request, 'stressz/individual_sum.html', context) 

第二步:可选优化模板逻辑

因为视图层已经做了权限拦截,能进入页面的都是有权限用户,你可以直接删掉原模板里的if/else判断,直接渲染页面内容即可。如果需要保留双重校验,也可以修改模板的判断条件:

{% if request.user.is_superuser or request.user.id == user_name_id %}
    <div class="container text-justify p-5">
        <div class="display-4 text-left text-primary my-3">
            ...
{% else %}
You are not able to view this page!
{% endif %}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:39:05