From 5264bec8f06facb09d348bc65569df54901dfd57 Mon Sep 17 00:00:00 2001 From: Chris Shyi Date: Sat, 5 May 2018 16:25:28 -0400 Subject: [PATCH] Updated entire tutorial to Django 2.0 routing syntax --- docs/tutorial/1-serialization.md | 2 -- docs/tutorial/2-requests-and-responses.md | 6 +++--- docs/tutorial/3-class-based-views.md | 6 +++--- .../tutorial/4-authentication-and-permissions.md | 10 +++++----- .../5-relationships-and-hyperlinked-apis.md | 16 ++++++++-------- docs/tutorial/6-viewsets-and-routers.md | 12 ++++++------ docs/tutorial/7-schemas-and-client-libraries.md | 2 +- 7 files changed, 26 insertions(+), 28 deletions(-) diff --git a/docs/tutorial/1-serialization.md b/docs/tutorial/1-serialization.md index 9629d9838..7a9b7cbd8 100644 --- a/docs/tutorial/1-serialization.md +++ b/docs/tutorial/1-serialization.md @@ -276,8 +276,6 @@ We'll also need a view which corresponds to an individual snippet, and can be us Finally we need to wire these views up. Create the `snippets/urls.py` file: from django.urls import path - # note that the path function was added in Django 2.0 - # use django.conf.urls.url if on an older version of Django from snippets import views urlpatterns = [ diff --git a/docs/tutorial/2-requests-and-responses.md b/docs/tutorial/2-requests-and-responses.md index 7fb1b2f2e..4a9b0dbf7 100644 --- a/docs/tutorial/2-requests-and-responses.md +++ b/docs/tutorial/2-requests-and-responses.md @@ -108,13 +108,13 @@ and Now update the `snippets/urls.py` file slightly, to append a set of `format_suffix_patterns` in addition to the existing URLs. - from django.conf.urls import url + from django.urls import path from rest_framework.urlpatterns import format_suffix_patterns from snippets import views urlpatterns = [ - url(r'^snippets/$', views.snippet_list), - url(r'^snippets/(?P[0-9]+)$', views.snippet_detail), + path('snippets/', views.snippet_list), + path('snippets/', views.snippet_detail), ] urlpatterns = format_suffix_patterns(urlpatterns) diff --git a/docs/tutorial/3-class-based-views.md b/docs/tutorial/3-class-based-views.md index f099d75cc..e02feaa5e 100644 --- a/docs/tutorial/3-class-based-views.md +++ b/docs/tutorial/3-class-based-views.md @@ -64,13 +64,13 @@ That's looking good. Again, it's still pretty similar to the function based vie We'll also need to refactor our `snippets/urls.py` slightly now that we're using class-based views. - from django.conf.urls import url + from django.urls import path from rest_framework.urlpatterns import format_suffix_patterns from snippets import views urlpatterns = [ - url(r'^snippets/$', views.SnippetList.as_view()), - url(r'^snippets/(?P[0-9]+)/$', views.SnippetDetail.as_view()), + path('snippets/', views.SnippetList.as_view()), + path('snippets//', views.SnippetDetail.as_view()), ] urlpatterns = format_suffix_patterns(urlpatterns) diff --git a/docs/tutorial/4-authentication-and-permissions.md b/docs/tutorial/4-authentication-and-permissions.md index 5348ade33..9af9c0940 100644 --- a/docs/tutorial/4-authentication-and-permissions.md +++ b/docs/tutorial/4-authentication-and-permissions.md @@ -85,10 +85,10 @@ Make sure to also import the `UserSerializer` class from snippets.serializers import UserSerializer -Finally we need to add those views into the API, by referencing them from the URL conf. Add the following to the patterns in `urls.py`. +Finally we need to add those views into the API, by referencing them from the URL conf. Add the following to the patterns in `snippets/urls.py`. - url(r'^users/$', views.UserList.as_view()), - url(r'^users/(?P[0-9]+)/$', views.UserDetail.as_view()), + path('users/', views.UserList.as_view()), + path('users//', views.UserDetail.as_view()), ## Associating Snippets with Users @@ -142,10 +142,10 @@ Add the following import at the top of the file: And, at the end of the file, add a pattern to include the login and logout views for the browsable API. urlpatterns += [ - url(r'^api-auth/', include('rest_framework.urls')), + path('api-auth/', include('rest_framework.urls')), ] -The `r'^api-auth/'` part of pattern can actually be whatever URL you want to use. +The `'api-auth/'` part of pattern can actually be whatever URL you want to use. Now if you open up the browser again and refresh the page you'll see a 'Login' link in the top right of the page. If you log in as one of the users you created earlier, you'll be able to create code snippets again. diff --git a/docs/tutorial/5-relationships-and-hyperlinked-apis.md b/docs/tutorial/5-relationships-and-hyperlinked-apis.md index 1e4da788e..ae24ffeb8 100644 --- a/docs/tutorial/5-relationships-and-hyperlinked-apis.md +++ b/docs/tutorial/5-relationships-and-hyperlinked-apis.md @@ -44,11 +44,11 @@ Instead of using a concrete generic view, we'll use the base class for represent As usual we need to add the new views that we've created in to our URLconf. We'll add a url pattern for our new API root in `snippets/urls.py`: - url(r'^$', views.api_root), + path('', views.api_root), And then add a url pattern for the snippet highlights: - url(r'^snippets/(?P[0-9]+)/highlight/$', views.SnippetHighlight.as_view()), + path('snippets//highlight/', views.SnippetHighlight.as_view()), ## Hyperlinking our API @@ -112,20 +112,20 @@ After adding all those names into our URLconf, our final `snippets/urls.py` file # API endpoints urlpatterns = format_suffix_patterns([ - url(r'^$', views.api_root), - url(r'^snippets/$', + path('', views.api_root), + path('snippets/', views.SnippetList.as_view(), name='snippet-list'), - url(r'^snippets/(?P[0-9]+)/$', + path('snippets//', views.SnippetDetail.as_view(), name='snippet-detail'), - url(r'^snippets/(?P[0-9]+)/highlight/$', + path('snippets//highlight/', views.SnippetHighlight.as_view(), name='snippet-highlight'), - url(r'^users/$', + path('users/', views.UserList.as_view(), name='user-list'), - url(r'^users/(?P[0-9]+)/$', + path('users//', views.UserDetail.as_view(), name='user-detail') ]) diff --git a/docs/tutorial/6-viewsets-and-routers.md b/docs/tutorial/6-viewsets-and-routers.md index 9452b4947..b68c20d40 100644 --- a/docs/tutorial/6-viewsets-and-routers.md +++ b/docs/tutorial/6-viewsets-and-routers.md @@ -91,12 +91,12 @@ Notice how we're creating multiple views from each `ViewSet` class, by binding t Now that we've bound our resources into concrete views, we can register the views with the URL conf as usual. urlpatterns = format_suffix_patterns([ - url(r'^$', api_root), - url(r'^snippets/$', snippet_list, name='snippet-list'), - url(r'^snippets/(?P[0-9]+)/$', snippet_detail, name='snippet-detail'), - url(r'^snippets/(?P[0-9]+)/highlight/$', snippet_highlight, name='snippet-highlight'), - url(r'^users/$', user_list, name='user-list'), - url(r'^users/(?P[0-9]+)/$', user_detail, name='user-detail') + path('', api_root), + path('snippets/', snippet_list, name='snippet-list'), + path('snippets//$', snippet_detail, name='snippet-detail'), + path('snippets//highlight/', snippet_highlight, name='snippet-highlight'), + path('users/', user_list, name='user-list'), + path('users//', user_detail, name='user-detail') ]) ## Using Routers diff --git a/docs/tutorial/7-schemas-and-client-libraries.md b/docs/tutorial/7-schemas-and-client-libraries.md index 95e0bd4b2..f8060ac29 100644 --- a/docs/tutorial/7-schemas-and-client-libraries.md +++ b/docs/tutorial/7-schemas-and-client-libraries.md @@ -42,7 +42,7 @@ from rest_framework.schemas import get_schema_view schema_view = get_schema_view(title='Pastebin API') urlpatterns = [ -    url(r'^schema/$', schema_view), +    path('schema/', schema_view), ... ] ```