django - 如何使用命名空间调用 Django Rest Framework URL?

标签 django namespaces django-rest-framework

我有一个 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_namemeetings-list , View 名称为 meetings-list-listmeetings-list-detail .听起来您正在寻找 meetings-listmeetings-detail ,这将需要一个 base_namemeetings .
router.register(r'meetings', MeetingViewSet, 'meetings')

您还在使用现已弃用的 patterns定义 url 的语法,但您实际上并没有使用正确的 url与它一起工作的调用。我建议只更换 patterns并使用标准 Python 列表/元组( []() )包装您的网址列表。

这应该可以解决您的问题,并调用 reverse应该为你解决。

关于django - 如何使用命名空间调用 Django Rest Framework URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27488226/

相关文章:

python - 在 Django 模型中自动对 ManyToMany 字段进行排序

variables - 从文件中获取变量

c# - Windows 服务无法识别 System.Windows.Forms 命名空间

python - 在 django rest 框架中使用过滤器获取最新对象

Django REST框架: How do you get the attributes from a serialized object?

具有静态方法和对自身的引用的 Python 类

django - 在 django1.4 和 postgresql 8.1 中避免 RETURN postgresql 语句与 bug #10467 相关

python - django 查询消除重复项

python - 使用 Python 创建一个简单的网页,其中模板内容是根据查询从数据库(或 pandas 数据框)填充的

c++ - 为什么这个对 swap() 的调用模棱两可?