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

Django NoReverseMatch错误:表单提交后无法跳转至详情页

解决NoReverseMatch错误:跳转至提交数据的详情页

错误原因

你的URL配置中,new_url对应的路径要求传入spk(数字类型的主键参数),但表单提交后的跳转逻辑里没有传递这个必要参数,导致Django无法反向解析出正确的URL。

具体修复步骤

1. 修正视图中的跳转逻辑

在处理表单提交的视图函数里,保存数据后必须获取刚创建对象的主键,将其作为参数传入URL反向解析:

from django.shortcuts import render, redirect
from .forms import 你的表单类
from .models import 你的模型类

def 表单处理视图(request):
    if request.method == 'POST':
        form = 你的表单类(request.POST)
        if form.is_valid():
            # 保存表单并获取刚创建的对象
            new_obj = form.save()
            # 跳转时传入spk参数,值为新对象的主键
            return redirect('new_url', spk=new_obj.pk)
    else:
        form = 你的表单类()
    return render(request, '表单模板.html', {'form': form})

也可以用reverse写法:return redirect(reverse('new_url', kwargs={'spk': new_obj.pk})),效果一致。

2. 确认URL配置正确性

确保urls.py中new_url的参数定义和视图接收的参数匹配:

from django.urls import path
from . import views

urlpatterns = [
    # 其他URL规则...
    # 这里<int:spk>定义了参数名是spk,类型为整数
    path('new/<int:spk>/', views.详情页视图, name='new_url'),
]

3. 检查模板中的反向解析(如果有)

如果模板里有直接调用{% url 'new_url' %}的地方,必须补充参数:

# 错误写法
<a href="{% url 'new_url' %}">查看详情</a>

# 正确写法(假设模板上下文里有new_obj对象)
<a href="{% url 'new_url' spk=new_obj.pk %}">查看详情</a>

验证

提交表单后,Django会根据新创建对象的主键生成new/[主键数字]/格式的URL,成功跳转到详情页展示刚提交的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 04:35:01