我有这个urls.py:
urlpatterns = patterns('',
# Plugin actions
url(r'plugin/((?P<slug>[a-zA-Z0-9_\-]*)/)?$', PluginView.as_view(), name='wa-plugin'),
)
然后当我使用反向时:
reverse('wa-plugin', args=[u'plugin-header-1'])
甚至
reverse('wa-plugin', kwargs={'slug':u'plugin-header-1'})
我得到了
NoReverseMatch: Reverse for 'wa-plugin' with arguments
'('plugin-header-1',)' and keyword arguments '{}' not found.
您对我如何使其有效有任何想法吗?
答案 0 :(得分:2)
如果问题是可选参数,那么一种方法是定义两个url条目(到同一个视图):
urlpatterns = patterns('',
# Plugin actions
url(r'plugin/$', PluginView.as_view(), name='wa-plugin'),
url(r'plugin/(?P<slug>[a-zA-Z0-9_\-]*)/$', PluginView.as_view(), name='wa-plugin'),
)
(很确定你甚至可以使用相同的名字,因为它们有不同的“签名(kwargs)”)
答案 1 :(得分:0)
它的接缝反转不像可选参数。
您应该使用:
urlpatterns = patterns('',
# Plugin actions
url(r'plugin/$', PluginView.as_view(), name='wa-plugin'),
url(r'plugin/(?P<slug>[a-zA-Z0-9_\-]*)/$', PluginView.as_view(), name='wa-plugin-slug'),
)
然后reverse
适用于args
和kwargs