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

Django新增车辆表单提交后出现404错误求助

解决「Page not found (404) No Cars matches the given query」错误

问题根源

URL路由顺序错误导致精确匹配路径被模糊匹配覆盖。Django会按urlpatterns从上到下的顺序匹配路径,cars/<slug:car_slug>/会优先捕获所有cars/xxx/格式的请求,包括cars/addpost/。此时Django会把addpost当作car_slug参数传入car_slug视图,尝试从Cars模型中查找slug为addpost的记录,因不存在该记录触发404错误。

修复步骤

调整hello/urls.py中路由的顺序,让精确匹配的cars/addpost/路径优先于模糊匹配的slug路径:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='hello'),
    path('cars/addpost/', views.addpost, name='addpost'),  # 移至模糊匹配路径之前
    path("cars/<slug:car_slug>/", views.car_slug, name='car_slug'),
]

额外检查项

  • 确认addpost.html模板中表单的action属性正确指向addpost路由:
    <form method="post" action="{% url 'addpost' %}">
        {% csrf_token %}
        <!-- 表单内容 -->
    </form>
    
  • 检查Brands模型是否已添加数据,因为AddPostForm的brand字段要求选择已存在的品牌,若无数据会导致表单验证失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:15:44