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

Django URL路径配置问题:如何实现简洁URL并解决404错误

解决Django URL 404问题并配置简洁路径

首先,咱们先理清你遇到的两个核心问题:404错误的根源,以及配置不带.html的简洁URL,一步步来解决:

1. 修复404错误的核心原因

你看到的http://127.0.0.1:8000/index.html/contact这个错误路径,是因为页面里的菜单链接用了相对路径(比如<a href="contact">)。当你在index.html/页面点击这个链接时,浏览器会自动把当前路径和链接拼接,就变成了嵌套的错误路径,而你的URL配置里根本没有这个路径,所以触发404。

2. 配置简洁的无.html后缀URL

要实现http://127.0.0.1:8000/index、http://127.0.0.1:8000/contact这类简洁路径,需要做以下3步:

步骤1:修改urls.py的路径配置

把原来带.html的路径改成简洁的名称,同时建议添加根路径指向首页(访问/直接跳转到首页):

urlpatterns = [
    path('', views.homepage),  # 根路径直接访问首页
    path('index/', views.homepage),
    path('contact/', views.contact),
    path('about/', views.about),
    path('customers/', views.customers),  # 补上你定义了但没配置的customers视图
]

步骤2:修正模板中的链接路径

把页面里的所有<a>标签的href改成绝对路径(以/开头),这样不管当前在哪个页面,都会从根路径跳转:

<!-- 错误的相对路径 -->
<a href="contact">联系我们</a>

<!-- 正确的绝对路径 -->
<a href="/contact">联系我们</a>
<a href="/index">首页</a>
<a href="/about">关于我们</a>
<a href="/customers">客户页面</a>

步骤3:确认视图与模板的对应关系

你的视图函数已经正确返回对应的模板文件(比如contact视图返回contact.html),这部分不需要修改,保持现状即可:

def customers(request):
    return render(request, 'customers.html')
def about(request):
    return render(request, 'about.html')
def contact(request):
    form_class = ContactForm
    return render(request, 'contact.html', { 'form': form_class, })

额外提示:优化URL的小技巧

如果想让/index和根路径/都指向首页,上面的配置已经实现了;另外,Django的URL配置支持name参数,方便模板里用{% url 'name' %}生成链接,避免硬编码路径,比如:

# urls.py里给路径命名
urlpatterns = [
    path('', views.homepage, name='home'),
    path('contact/', views.contact, name='contact'),
    # 其他路径同理
]

# 模板里可以这样写(更灵活,修改URL时不用改模板)
<a href="{% url 'home' %}">首页</a>
<a href="{% url 'contact' %}">联系我们</a>

这样调整后,你的URL就会变成简洁的形式,同时也不会再出现404错误啦。

内容的提问来源于stack exchange,提问作者Sleepy-Z

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:44:26