diff --git a/docs/index.md b/docs/index.md index 88de254ff..8dc76361a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -78,27 +78,35 @@ The following packages are optional: Install using `pip`, including any optional packages you want... - pip install djangorestframework - pip install markdown # Markdown support for the browsable API. - pip install django-filter # Filtering support +```bash +pip install djangorestframework +pip install markdown # Markdown support for the browsable API. +pip install django-filter # Filtering support +``` ...or clone the project from github. - git clone https://github.com/encode/django-rest-framework +```bash +git clone https://github.com/encode/django-rest-framework +``` Add `'rest_framework'` to your `INSTALLED_APPS` setting. - INSTALLED_APPS = [ - ... - 'rest_framework', - ] +```python +INSTALLED_APPS = [ + # ... + "rest_framework", +] +``` If you're intending to use the browsable API you'll probably also want to add REST framework's login and logout views. Add the following to your root `urls.py` file. - urlpatterns = [ - ... - path('api-auth/', include('rest_framework.urls')) - ] +```python +urlpatterns = [ + # ... + path("api-auth/", include("rest_framework.urls")) +] +``` Note that the URL path can be whatever you want. @@ -110,44 +118,51 @@ We'll create a read-write API for accessing information on the users of our proj Any global settings for a REST framework API are kept in a single configuration dictionary named `REST_FRAMEWORK`. Start off by adding the following to your `settings.py` module: - REST_FRAMEWORK = { - # Use Django's standard `django.contrib.auth` permissions, - # or allow read-only access for unauthenticated users. - 'DEFAULT_PERMISSION_CLASSES': [ - 'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly' - ] - } +```python +REST_FRAMEWORK = { + # Use Django's standard `django.contrib.auth` permissions, + # or allow read-only access for unauthenticated users. + "DEFAULT_PERMISSION_CLASSES": [ + "rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly" + ] +} +``` Don't forget to make sure you've also added `rest_framework` to your `INSTALLED_APPS`. We're ready to create our API now. Here's our project's root `urls.py` module: - from django.urls import path, include - from django.contrib.auth.models import User - from rest_framework import routers, serializers, viewsets +```python +from django.urls import path, include +from django.contrib.auth.models import User +from rest_framework import routers, serializers, viewsets - # Serializers define the API representation. - class UserSerializer(serializers.HyperlinkedModelSerializer): - class Meta: - model = User - fields = ['url', 'username', 'email', 'is_staff'] - # ViewSets define the view behavior. - class UserViewSet(viewsets.ModelViewSet): - queryset = User.objects.all() - serializer_class = UserSerializer +# Serializers define the API representation. +class UserSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = User + fields = ["url", "username", "email", "is_staff"] - # Routers provide an easy way of automatically determining the URL conf. - router = routers.DefaultRouter() - router.register(r'users', UserViewSet) - # Wire up our API using automatic URL routing. - # Additionally, we include login URLs for the browsable API. - urlpatterns = [ - path('', include(router.urls)), - path('api-auth/', include('rest_framework.urls', namespace='rest_framework')) - ] +# ViewSets define the view behavior. +class UserViewSet(viewsets.ModelViewSet): + queryset = User.objects.all() + serializer_class = UserSerializer + + +# Routers provide an easy way of automatically determining the URL conf. +router = routers.DefaultRouter() +router.register(r"users", UserViewSet) + +# Wire up our API using automatic URL routing. +# Additionally, we include login URLs for the browsable API. +urlpatterns = [ + path("", include(router.urls)), + path("api-auth/", include("rest_framework.urls", namespace="rest_framework")), +] +``` You can now open the API in your browser at [http://127.0.0.1:8000/](http://127.0.0.1:8000/), and view your new 'users' API. If you use the login control in the top right corner you'll also be able to add, create and delete users from the system.