我有一个urls.py
看起来像这样:
router = SimpleRouter()
router.register(r'meetings', MeetingViewSet, 'meetings-list')
urlpatterns = patterns('clubs.views',
url(r'^(?P<pk>\d+)/', include(router.urls)),
url(r'^amazon/$', AmazonView.as_view(), name="amazon"),)
我想使用
'meetings-list'
引用reverse
网址,如下所示:url = reverse('meetings-list')
但是当我尝试这个我得到
NoReverseMatch: Reverse for 'MeetingViewSet' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
有没有一种使用Django Rest Framework做到这一点的方法?
最佳答案
向路由器注册视图时,可以将base_name
作为第三个参数传递。此基本名称用于生成单独的URL名称,它们分别作为[base_name]-list
和[base_name]-detail
生成。
就您而言,您正在将视图集注册为
router.register(r'meetings', MeetingViewSet, 'meetings-list')
因此,
base_name
是meetings-list
,视图名称是meetings-list-list
和meetings-list-detail
。听起来您正在寻找meetings-list
和meetings-detail
,它们需要base_name
为meetings
。router.register(r'meetings', MeetingViewSet, 'meetings')
您还使用了现在不建议使用的
patterns
语法来定义url,但是实际上并没有使用正确的url
调用。我建议只替换patterns
并用标准的Python列表/元组([]
或()
)包装您的网址列表。这应该可以解决您的问题,并且
reverse
的呼叫应该可以为您解决。