我认为该错误与Django 2.0中的网址格式更改有关。 我在Google上发现的几乎所有内容都使用旧的网址格式,因此它们没有帮助。
...models
def get_absolute_url(self):
return reverse('music:detail', kwargs={'pk':self.pk})
我的网址:
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]+)/$']
然后,我直接去列出,编号为11的项目就在这里,我单击它,它就打开了,没有任何问题
详细模式:
path('<int:album_id>/', views.detail, name='detail')
答案 0 :(得分:0)
您的详细URL模式需要一个album_id
参数,但是您正在传递它pk
。更正您的方法:
def get_absolute_url(self):
return reverse('music:detail', kwargs={'album_id':self.pk})
或更改网址格式:
path('<int:pk>/', views.detail, name='detail')
(但不要两者都做)。