我有一个Django urls.py,其中包含来自子应用程序的另一个urls.py。尝试使用reverse()时,我得到“反向未找到”错误。我在include之前和之后都在URL中使用关键字参数,它基本上是:
首先是urls.py:
urlpatterns = patterns(
'',
# Change requests are in a subapp
url(r'^projects/(?P<project_slug>[^/]+)/changerequests/',
include('myapp.changerequests.urls')),
)
在subapp的urls.py中:
urlpatterns = patterns(
'',
url(r'^detail/(?P<request_id>\d+)/$',
views.RequestDetailPage.as_view(),
name='changerequests_detail'),
)
现在我想找到一个类似
的网址url = reverse('changerequests_detail', kwargs={
'project_slug': self.project.slug,
'request_id': str(self.id)})
所以它使用了两个kwargs,它们遍布urls.pys。但反过来却找不到答案(Reverse for 'changerequests_main' with arguments '()' and keyword arguments '{u'project_slug': u'123-2013_monitoring_slibaanwas-hdsr', u'request_id': '2'}' not found.
)。
这是问题吗?用这种方式将kwargs传播到urls文件是不可能的吗?
答案 0 :(得分:1)
可能发生错误,因为它试图撤消'changerequests_main'
网址,而不是'changerequests_detail'
。