繁体   English   中英

在 Django 中提交表单后,如何使用对象 ID 重定向到新页面?

[英]How to redirect to a new page using an object id after submitting a form in Django?

我想重定向到提交表单时新创建的页面。 我尝试并得到了NoReverseMatch错误。

这是引发的异常:

反向使用关键字参数 '{'id': 15}' 未找到 'receive'。 尝试了 1 个模式:['receive/(?P[0-9]+)$']

以下是我的看法:

def new_receive(request):
    """The page for adding a new receive."""
    if request.method != 'POST':
        form = ReceiveForm()
    else:
        form = ReceiveForm(data=request.POST)
        if form.is_valid():
            new_receive = form.save(commit=False)
            new_receive.save()
        return redirect('imsapp:receive', id=new_receive.id)
    context = {'form':form}
    return render(request, 'imsapp/new_receive.html', context)

def receive(request, receive_id):
    """The page for viewing a receive."""
    receive = Receive.objects.get(id=receive_id)
    receipt_no = receive.receipt_no
    date = receive.date
    context = {'receive':receive, 'receipt_no':receipt_no, 'date':date}
    return render(request, 'imsapp/receive.html', context)

以下是网址模式:

# Page for adding a receive
path('new_receive', views.new_receive, name='new_receive'),
# Page for viewing a receive 
path('receive/<int:receive_id>', views.receive, name='receive'),

这个问题由@bruno desthuilliers 在上面的评论部分回答

并且您的 urlpath 参数定义为“receive_id”,而不是“id”=> return redirect('imsapp:receive', receive_id=new_receive.id)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM