首页 > 解决方案 > django 反向 url 错误

问题描述

我在 urls.py 中有以下代码

urlpatterns=[
     path('estimate_insert/',views.estimate_ui,name='estimate_i'),
     path('<int:id>/',views.estimate_ui,name='estimate_u'),
     path('estimate_delete/<int:id>/',views.estimate_d,name='estimate_d'),
     path('estimate_preview/<int:id>/',views.estimate_preview,name='estimate_v'),
]

我将这些 url 与 views.py 中的以下代码匹配

def estimate_ui(request,id=0):
    if request.method=="GET":
        if id==0:
            form=EstimateForm()
        else:
            obj_estimate=Estimate.objects.get(pk=id)
            form=EstimateForm(instance=obj_estimate)
        return render(request,"Invoices/estimate_ui.html",{'form':form})
    
    else: 
        if id==0:
          form=EstimateForm(request.POST)
        else: 
          obj_estimate=Estimate.objects.get(pk=id)
          form=EstimateForm(request.POST,instance=obj_estimate)
        if form.is_valid():
          form.save()
        return redirect('/invoices/')

当我访问它时,下面提到的 url 会导致问题。

path('<int:id>/',views.estimate_ui,name='estimate_u'),

当我访问时,我收到以下错误

NoReverseMatch at /invoices/status/3/
Reverse for 'estimate_u' with arguments '('',)' not found. 1 pattern(s) tried: ['estimate/(?P<id>[0-9]+)/$']
Request Method:
GET
Request URL:
http://127.0.0.1:8000/invoices/status/3/
Django Version:
3.1.4
Exception Type:
NoReverseMatch
Exception Value:
Reverse for 'estimate_u' with arguments '('',)' not found. 1 pattern(s) tried: ['estimate/(?P<id>[0-9]+)/$']

谁能解释为什么会这样。我正在访问index.html--> linked to move to status.html(it has link to move estimate.html)--> at estimate.html我有很多步骤,它基本上是一个基于工作流的应用程序。我在 youtube 上观看了几乎所有与 url 相关的视频,搜索了 google,但没有找到任何帮助。谢谢

标签: pythondjango

解决方案


推荐阅读