diff options
| author | Tom Christie | 2014-08-20 16:24:52 +0100 | 
|---|---|---|
| committer | Tom Christie | 2014-08-20 16:24:52 +0100 | 
| commit | 9372cc8c31fc5d7b3fb3b155ed88b0b6d3c00049 (patch) | |
| tree | cb9866425b9cbcdcc58fe0254b1f186318560470 /README.md | |
| parent | 59b47eac14778767a17e56bd8adc0610417f2878 (diff) | |
| download | django-rest-framework-9372cc8c31fc5d7b3fb3b155ed88b0b6d3c00049.tar.bz2 | |
Deprecate .model attribute on views
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 74 | 
1 files changed, 55 insertions, 19 deletions
| @@ -39,40 +39,51 @@ Add `'rest_framework'` to your `INSTALLED_APPS` setting.      INSTALLED_APPS = (          ... -        'rest_framework',         +        'rest_framework',      )  # Example  Let's take a look at a quick example of using REST framework to build a simple model-backed API for accessing users and groups. -Here's our project's root `urls.py` module: +Startup up a new project like so...  + +    pip install django +    pip install djangorestframework +    django-admin startproject example . +    ./manage.py syncdb + +Now edit the `example/urls.py` module in your project:  ```python -from django.conf.urls.defaults import url, patterns, include -from django.contrib.auth.models import User, Group -from rest_framework import viewsets, routers +from django.conf.urls import url, include +from django.contrib.auth.models import User +from rest_framework import serializers, viewsets, routers + +# 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): -    model = User - -class GroupViewSet(viewsets.ModelViewSet): -    model = Group +    queryset = User.objects.all() +    serializer_class = UserSerializer -# Routers provide an easy way of automatically determining the URL conf +# Routers provide a way of automatically determining the URL conf.  router = routers.DefaultRouter()  router.register(r'users', UserViewSet) -router.register(r'groups', GroupViewSet)  # Wire up our API using automatic URL routing.  # Additionally, we include login URLs for the browseable API. -urlpatterns = patterns('', +urlpatterns = [      url(r'^', include(router.urls)),      url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')) -) +]  ```  We'd also like to configure a couple of settings for our API. @@ -80,12 +91,12 @@ We'd also like to configure a couple of settings for our API.  Add the following to your `settings.py` module:  ```python -REST_FRAMEWORK = { -    # Use hyperlinked styles by default. -    # Only used if the `serializer_class` attribute is not set on a view. -    'DEFAULT_MODEL_SERIALIZER_CLASS': -        'rest_framework.serializers.HyperlinkedModelSerializer', +INSTALLED_APPS = ( +    ...  # Make sure to include the default installed apps here. +    'rest_framework',         +) +REST_FRAMEWORK = {      # Use Django's standard `django.contrib.auth` permissions,      # or allow read-only access for unauthenticated users.      'DEFAULT_PERMISSION_CLASSES': [ @@ -93,10 +104,35 @@ REST_FRAMEWORK = {      ]  }  ``` -Don't forget to make sure you've also added `rest_framework` to your `INSTALLED_APPS` setting.  That's it, we're done! +    ./manage.py runserver + +You can now open the API in your browser at `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. + +You can also interact with the API using command line tools such as [`curl`](http://curl.haxx.se/). For example, to list the users endpoint: + +    $ curl -H 'Accept: application/json; indent=4' -u admin:password http://127.0.0.1:8000/users/ +	[ +	    { +	        "url": "http://127.0.0.1:8000/users/1/",  +	        "username": "admin",  +	        "email": "admin@example.com",  +	        "is_staff": true,  +	    } +	] + +Or to create a new user: + +    $ curl -X POST -d username=new -d email=new@example.com -d is_staff=false -H 'Accept: application/json; indent=4' -u admin:password http://127.0.0.1:8000/users/ +    { +        "url": "http://127.0.0.1:8000/users/2/",  +        "username": "new",  +        "email": "new@example.com",  +        "is_staff": false,  +    } +  # Documentation & Support  Full documentation for the project is available at [http://www.django-rest-framework.org][docs]. | 
