我正在尝试实现如here所示的通用编辑视图:
我从CreateView开始,它正确地呈现和提交数据。但是,当我尝试使用reverse()返回到新对象的详细视图页面时,我收到错误。
这是我的错误讯息:
/ work / clients / create /的NoReverseMatch 使用参数'('14',)'和关键字参数'{}'找不到'ClientDetailView'的反转。尝试了0种模式:[]
以下是我在模型中定义get_absolute_url()的方法:
def get_absolute_url(self):
return reverse('ClientDetailView', kwargs={'pk': self.pk})
我的视图称为ClientDetailView。我不确定其他哪些信息会有所帮助。
这是类ClientDetailView:
class ClientDetailView(generic.DetailView):
model = Client
template_name = 'work/client_detail.html'`
,这是来自urls.py的url()
:
url(r'^clients/(?P<pk>[0-9]+)/$', views.ClientDetailView.as_view(), name='clients_detail'),`
任何人都可以解释我做错了吗?
答案 0 :(得分:0)
我解决了自己的问题。我不得不将命名空间添加到reverse()方法中:
return reverse('work:clients_detail', kwargs={'pk': self.pk})
如果有人能解释我为什么需要这样做,我将不胜感激。
这是我的完整urls.py: 来自django.conf.urls import url
from . import views
app_name = 'work'
urlpatterns = [
url(r'^work_orders/$', views.WorkOrdersIndexView.as_view(), name='quotes_index'),
url(r'^work_orders/(?P<pk>[0-9]+)/$', views.WorkOrdersDetailView.as_view(), name='work_orders_detail'),
url(r'^quotes/$', views.QuotesIndexView.as_view(), name='quotes_index'),
url(r'^quotes/(?P<pk>[0-9]+)/$', views.QuotesDetailView.as_view(), name='quotes_detail'),
url(r'^project/(?P<pk>[0-9]+)/$', views.ProjectDetailView.as_view(), name='project_detail'),
url(r'^project/create/$', views.ProjectCreateView.as_view(), name='project_create'),
url(r'^project/(?P<pk>[0-9]+)/update/$', views.ProjectUpdateView.as_view(), name='project_update'),
url(r'^project/(?P<pk>[0-9]+)/delete/$', views.ProjectDeleteView.as_view(), name='project_delete'),
url(r'^clients/$', views.ClientView.as_view(), name='client_index'),
url(r'^clients/(?P<pk>[0-9]+)/$', views.ClientDetailView.as_view(), name='clients_detail'),
url(r'^clients/create/$', views.ClientCreateView.as_view(), name='client_create'),
url(r'^clients/(?P<pk>[0-9]+)/update/$', views.ClientUpdateView.as_view(), name='clients_update'),
url(r'^clients/(?P<pk>[0-9]+)/delete/$', views.ClientDeleteView.as_view(), name='clients_delete'),
]
答案 1 :(得分:0)
实际上你试图反转视图,而不是AsyncTask
使用网址名称ClientDetailView