我收到了这个错误,但我无法解决。在视图.py我有:
...code...
def get_success_url(self):
booking = self.object
return reverse("complete_booking", booking.id)
urls.py:
from django.urls import path
from . import views
urlpatterns = [
path(
'confirm/',
views.ConfirmTripView.as_view(),
name="confirm_trip"),
path(
'<pk>/passengers/add',
views.InputPassengersView.as_view(),
name="create_passengers"),
path(
'<pk>/checkout/',
views.CompleteBookingView.as_view(),
name="complete_booking"),
]
让我困惑的是,我对"create_passengers"视图几乎完全相同(booking.id作为参数传递(,而且它运行良好。
回溯显示:
Traceback切换到复制粘贴视图
"包含的URLconf"{name}"中似乎没有任何模式。如果在文件中看到有效的模式,则问题可能是由循环导入引起的">
上述异常('in'对象不可迭代(是以下异常的直接原因:我能帮我解决这个问题吗?
这不起作用的原因是reverse(…)
[Django doc]将args
和kwargs
作为参数。args
应该是一个可迭代的项,如元组、列表等,而kwargs
是一个类似字典的对象。因此,您使用反转
def get_success_url(self):
return reverse('complete_booking', args=(self.object.id,))
redirect(…)
[Django-doc]另一方面使用位置参数和命名参数,但不能将其用于get_success_url
。