NoReverseMatch,但它存在并被发现
NoReverseMatch, but it exist and was found
urls.py
url(r'^hr/checktask/(?P<pk>\d+[-]\w)/$', core_views.CheckTask, name='checktask_hr'),
url(r'^admin/checktask/(?P<pk>\d+[-]\w)/$', core_views.CheckTask, name='checktask_admin'),
url(r'^finance/checktask/(?P<pk>\d+[-]\w)/$', core_views.CheckTask, name='checktask_finance'),
url(r'^manager/checktask/(?P<pk>\d+[-]\w)/$', core_views.CheckTask, name='checktask_manager'),
本质上,我有 4 个独立的 url,但它们都调用相同的函数。每个都有不同的名字。
在我的代码中,根据我的 url,我将调用其中一种模式
pk = 42387790148475610;
callingView = request.META.get('PATH_INFO').split("/")[1]
return HttpResponseRedirect(reverse('checktask_' + callingView, kwargs={'pk': pk}))
但不知何故,我得到了一个 NoReverseMatch 错误,尽管它实际上指向正确的 url 模式(在这种情况下为 hr)
Reverse for 'checktask_hr' with keyword arguments '{'pk': '42387790148475610'}' not found. 1 pattern(s) tried: ['hr/checktask/(?P<pk>\d+[-]\w)/$']
我哪里错了?
您的 pk
参数与 URL 中 pk
的模式不匹配。您的模式假定 pk 中某处有破折号 (-
),但您提供的值中有 none。
试试这个
url(r'^hr/checktask/(?P<pk>\d+)/$',core_views.CheckTask, name='checktask_hr'),
....
读这个https://docs.djangoproject.com/en/1.8/topics/http/urls/#id4
urls.py
url(r'^hr/checktask/(?P<pk>\d+[-]\w)/$', core_views.CheckTask, name='checktask_hr'),
url(r'^admin/checktask/(?P<pk>\d+[-]\w)/$', core_views.CheckTask, name='checktask_admin'),
url(r'^finance/checktask/(?P<pk>\d+[-]\w)/$', core_views.CheckTask, name='checktask_finance'),
url(r'^manager/checktask/(?P<pk>\d+[-]\w)/$', core_views.CheckTask, name='checktask_manager'),
本质上,我有 4 个独立的 url,但它们都调用相同的函数。每个都有不同的名字。
在我的代码中,根据我的 url,我将调用其中一种模式
pk = 42387790148475610;
callingView = request.META.get('PATH_INFO').split("/")[1]
return HttpResponseRedirect(reverse('checktask_' + callingView, kwargs={'pk': pk}))
但不知何故,我得到了一个 NoReverseMatch 错误,尽管它实际上指向正确的 url 模式(在这种情况下为 hr)
Reverse for 'checktask_hr' with keyword arguments '{'pk': '42387790148475610'}' not found. 1 pattern(s) tried: ['hr/checktask/(?P<pk>\d+[-]\w)/$']
我哪里错了?
您的 pk
参数与 URL 中 pk
的模式不匹配。您的模式假定 pk 中某处有破折号 (-
),但您提供的值中有 none。
试试这个
url(r'^hr/checktask/(?P<pk>\d+)/$',core_views.CheckTask, name='checktask_hr'),
....
读这个https://docs.djangoproject.com/en/1.8/topics/http/urls/#id4