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

Django DetailView访问出现404错误,URL末尾多单引号求助

问题排查与解决方案

核心问题分析

你遇到的404错误是因为生成的URL末尾被意外添加了单引号(URL编码后为%27),同时代码中存在URL反向解析的错误,两者共同导致了访问失败。

具体修复步骤

1. 修正模型中的URL反向解析错误

你的Customer模型里的get_absolute_url方法使用了错误的URL名称,导致反向解析无法正确生成详情页URL:
原代码:

def get_absolute_url(self):
    return reverse("custome", kwargs={"slug": self.slug})

修改为:

def get_absolute_url(self):
    return reverse("nrn:view-customer", kwargs={"slug": self.slug})

说明:urls.py中详情页的URL名称是view-customer,且属于nrn这个应用命名空间,必须用app_name:url_name的格式进行反向解析。

2. 移除URL末尾的多余单引号

URL末尾的单引号(%27)大概率来自首页模板(index.html)的链接写法错误。请检查首页中生成详情页链接的代码,比如是否写成了类似:

<a href="{% url 'nrn:view-customer' slug=custome.slug'%'}">查看客户详情</a>

需要移除多余的单引号,修正为:

<a href="{% url 'nrn:view-customer' slug=custome.slug %}">查看客户详情</a>

3. 补充缺失的模型字段(可选但必要)

你的Customer模型Meta类中使用了-date_creation排序,但代码里未定义该字段,会导致数据库查询错误。需要添加该字段:

date_creation = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")

添加后执行数据库迁移命令:

python manage.py makemigrations
python manage.py migrate

验证修复

完成上述修改后:

  • 重新启动服务
  • 访问客户列表页,点击详情链接,此时生成的URL应该不再包含末尾的单引号,能正常加载详情页

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 23:02:10