尝试使用模型表单反转 url 时出现 NoReverseMatch 错误
NoReverseMatch error while trying to reverse url with Model Forms
我认为该错误与 url django 2.0 中的模式更改有关。
我在 Google 上找到的几乎所有内容都使用旧的 url 模式,因此它们没有帮助。
...models
def get_absolute_url(self):
return reverse('music:detail', kwargs={'pk':self.pk})
我的urls:
urlpatterns = [
#music/add/
path('add', views.AlbumCreate.as_view(), name="album-add")
]
这是表格,我不认为它有什么问题,因为当我自己填写表格并点击提交时,在列表页面上它显示它已经提交。
<form action="", method="post">
错误本身:
NoReverseMatch at /music/add/
Reverse for 'detail' with keyword arguments **'{'pk': 11(id of the item i'm adding}'** not found.
1 pattern(s) tried: ['music/(?P<album_id>[0-9]+)/$']
然后我直接去list,id为11的item就在那里,点开,没有任何问题
详细模式:
path('<int:album_id>/', views.detail, name='detail')
您的详细信息 URL 模式需要一个 album_id
参数,但您正在传递它 pk
。更正你的方法:
def get_absolute_url(self):
return reverse('music:detail', kwargs={'album_id':self.pk})
或更改 URL 模式:
path('<int:pk>/', views.detail, name='detail')
(但不要两者都做)。
我认为该错误与 url django 2.0 中的模式更改有关。 我在 Google 上找到的几乎所有内容都使用旧的 url 模式,因此它们没有帮助。
...models
def get_absolute_url(self):
return reverse('music:detail', kwargs={'pk':self.pk})
我的urls:
urlpatterns = [
#music/add/
path('add', views.AlbumCreate.as_view(), name="album-add")
]
这是表格,我不认为它有什么问题,因为当我自己填写表格并点击提交时,在列表页面上它显示它已经提交。
<form action="", method="post">
错误本身:
NoReverseMatch at /music/add/
Reverse for 'detail' with keyword arguments **'{'pk': 11(id of the item i'm adding}'** not found.
1 pattern(s) tried: ['music/(?P<album_id>[0-9]+)/$']
然后我直接去list,id为11的item就在那里,点开,没有任何问题
详细模式:
path('<int:album_id>/', views.detail, name='detail')
您的详细信息 URL 模式需要一个 album_id
参数,但您正在传递它 pk
。更正你的方法:
def get_absolute_url(self):
return reverse('music:detail', kwargs={'album_id':self.pk})
或更改 URL 模式:
path('<int:pk>/', views.detail, name='detail')
(但不要两者都做)。