1

我正在研究这个 Django 项目以进行学习,但我无法使用 reverse() 解析 URL。

我试图从在线文档中理解这个概念,但我无法成功。

ModelViewSet在views.py中使用

在我的tests.py

POSTS_URL = reverse('posts:posts-list')

这是我的 urls.py 帖子(即应用程序)

app_name = 'posts'


router = DefaultRouter()
router.register('', PostsViewSet)


urlpatterns = [
path('', include(router.urls))
]

这是我在根目录下的 urls.py

urlpatterns = [
path('admin/', admin.site.urls),
path('api/posts/', include('posts.urls')),
path('docs/', include_docs_urls(title='My API title')),
]

这是我得到的错误

django.urls.exceptions.NoReverseMatch: Reverse for 'posts-list' not found. 'posts-list' is not a valid view function or patternname.

也有人可以建议一个很好的地方来正确理解 reverse() 和路由器如何一起工作..

4

1 回答 1

1

在您urls.py app_name似乎没有习惯并且路由器默认使用模型的名称(单数),因此reverse("post-list")应该可以工作。

如果你想命名你的网址,你应该做类似path('api/posts/', include('posts.urls', 'posts'))thenreverse('posts:post-list')应该工作的事情。

于 2019-01-31T19:42:06.853 回答