我有一个 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 做到这一点?
最佳答案
向路由器注册 View 时,可以通过base_name
作为第三个参数。此基本名称用于生成单独的 url 名称,生成为 [base_name]-list
和 [base_name]-detail
.
在您的情况下,您将 View 集注册为
router.register(r'meetings', MeetingViewSet, 'meetings-list')
所以
base_name
是 meetings-list
, View 名称为 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
应该为你解决。
关于django - 如何使用命名空间调用 Django Rest Framework URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27488226/