我正在研究这个Django项目,但我无法使用reverse()解析URL。
我试图从在线文档中了解这个概念,但我无法成功。
我在自己的视图中使用ModelViewSet
。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()和路由器如何协同工作。.
答案 0 :(得分:0)
在您的urls.py
app_name
中似乎没有被使用,默认情况下the router uses the model's name(单数),因此reverse("post-list")
应该可以工作。
如果要对URL进行命名空间,则应该执行path('api/posts/', include('posts.urls', 'posts'))
之类的操作,然后reverse('posts:post-list')
应该起作用。