带有 Django 2.0 的 Django REST Framework URL

Django REST Framework URLs with Django 2.0

我正在尝试使用 Django 2.0 项目设置 Django REST Framework,这意味着 url(r'^something/' ... 已替换为 path(something/ ...

我正在研究如何设置我的 rest_framework 模式。

这是我的:

router = routers.DefaultRouter()
router.register(r'regulations', api.RegulationViewSet)
router.register(r'languages', api.LanguageViewSet)


urlpatterns = [
    ...
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
    ...
]

如果我去 http://127.0.0.1:8000/regulations 我只会得到:

Page not found (404)

我应该如何设置 urlpatterns

urlpatterns = [
    ...
    path('', include(router.urls)),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
    ...
]

path('', include(router.urls)),你可以得到:

http://127.0.0.1:8000/regulations/
http://127.0.0.1:8000/languages/

path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),

您可以获得:

http://127.0.0.1:8000/api-auth/{other paths}

注册 router 后,您必须将其包含在 urlpatterns 中。 @Ykh 建议的方式在技术上是正确的,但关于内容却没有抓住要点。

urlpatterns = [
    # here you include your router
    path('', include(router.urls)),
    # here you include the authentication paths
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
]

现在您将拥有以下路线:

http://localhost:8000/regulations/
http://localhost:8000/languages/

加上:

http://localhost:8000/api-auth/{other paths}