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

Django如何实现仅帖子作者可见编辑按钮的问题咨询

问题1:路由报错修复

你新增的带参数的index路由完全不需要,首页本身就是展示全量帖子列表,不需要接收pk或username参数。你新增的3条路由不仅命名重复冲突,而且index视图没有定义接收参数的形参,必然会报错。直接删除新增的3条路由,保留原有配置即可:

path("", views.index, name="index"),

问题2:模板编辑按钮判断不生效修复

判断不生效是两个低级错误导致的:

  • 模板遍历帖子的变量是i,你判断逻辑里错误使用了不存在的post变量
  • i.username是关联的User对象实例,直接和request.user(当前登录用户对象)比较即可,不需要额外取username字符串对比

把模板里的判断代码替换为以下内容即可生效:

{% if request.user == i.username %}
<button class="btn-btn primary" my-id="{{i.id}}" id="ebutton-{{i.id}}" onclick="edit_form(this)" >Edit</button>
<br><br><br> 
{% endif %}

问题3:后端权限补充校验(必做)

前端判断只能控制按钮可见性,非常容易被绕过,你必须在编辑提交的后端接口中补充权限校验,示例如下:

from django.http import HttpResponseForbidden

def edit_post(request, post_id):
    post = Post.objects.get(id=post_id)
    # 校验帖子作者与当前登录用户是否一致
    if post.username != request.user:
        return HttpResponseForbidden("你没有权限编辑该帖子")
    # 后续编辑逻辑
    ...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:21:00