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

Django UpdateView访问404:URL配置及使用方法咨询

Django UpdateView URL配置与404问题排查

你的URL配置格式本身是对的,path("myroute/<int:pk>/", views.myUpdateView.as_view(), name="myname")完全符合UpdateView的要求——因为UpdateView默认需要从URL捕获pk(或slug,取决于模型设置)来定位要修改的对象。出现404大概率是其他环节出了问题,下面逐一排查:

常见404原因

  • 目标对象不存在:直接检查对应模型的数据库,确认是否存在id为1的记录。
  • 视图未关联模型/查询集:UpdateView必须明确知道要操作哪个模型,要么在视图类里定义model = 你的模型类,要么定义queryset = 你的模型.objects.all()(或自定义查询集),否则无法定位对象。
  • 重写get_object方法出错:如果自定义了这个方法,检查逻辑是否正确,比如过滤条件是否导致找不到数据。
  • URL前缀未匹配:如果这个path是在子urls.py中,确认主urls.py是否正确include了该子路由。比如主urls里如果是path("api/", include("yourapp.urls")),访问路径应该是api/myroute/1/而非myroute/1/。

正确使用步骤

1. 定义UpdateView视图类

from django.views.generic.edit import UpdateView
from .models import YourModel

class myUpdateView(UpdateView):
    model = YourModel  # 必须指定操作的模型
    fields = ['title', 'content']  # 允许修改的字段列表
    template_name = 'custom_update_form.html'  # 可选,默认模板路径是<app>/<model>_form.html
    success_url = '/dashboard/'  # 可选,表单提交成功后的跳转路径

2. 配置urls.py(app内路由)

from django.urls import path
from . import views

urlpatterns = [
    path("myroute/<int:pk>/", views.myUpdateView.as_view(), name="myname"),
]

3. 编写表单模板(示例)

<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">保存修改</button>
</form>

关于官方文档:其实文档里明确提到了UpdateView需要主键或slug参数来获取对象,URL配置需包含对应的路径转换器,同时视图必须关联模型或查询集,可能是你浏览时没注意到这部分细节。

内容的提问来源于stack exchange,提问作者R-obert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:37:09