Django REST Framework URLs with Django 2.0

偶尔善良 提交于 2020-01-12 07:40:11

问题


I'm trying to set up Django REST Framework with Django 2.0 project which means url(r'^something/' ... has been replaced with path(something/ ....

I'm trying to work out how to set up my rest_framework patterns.

This is what I have:

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')),
    ...
]

If I go to http://127.0.0.1:8000/regulations I simply get:

Page not found (404)

How should I set up my urlpatterns?


回答1:


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

with path('', include(router.urls)), you can get:

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

with

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

you can get:

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



回答2:


After registering the router you have to include it in the urlpatterns. The way how @Ykh suggested is technically correct, but with regards to content is missing the point.

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')),
]

Now you'll have the following routes:

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

plus:

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


来源:https://stackoverflow.com/questions/49005264/django-rest-framework-urls-with-django-2-0

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!