Django REST framework の動作確認

AnacondaとSpyderでDjango REST 開発環境を整える で開発環境を作成したので、動作確認 まで行う。

1.インストール

1.1 必要パッケージのインストール

 AnacondaとSpyderでDjango REST 開発環境を整える を参照。

pip install djangorestframework
pip install markdown       # Markdown support for the browsable API.
pip install django-filter  # Filtering support

1.2 設定の記述

settings.py

INSTALLED_APPS = [
        :
    'rest_framework',
]

urls.py

API情報を閲覧可能にしたい場合、ログイン/アウトの機能が必要になるだろう。その場合、ルート urls.py ファイルに以下を追加する。

urlpatterns = [
              :
    url(r'^', include(router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

URLパスを指定するときには、'rest_framework.urls’  と一緒に、namespace=‘rest_framework’  を含めなければならないが、Django1.9以降では、REST frameworkがこれをセットするため省略可能。

2.簡単な例

プロジェクトのユーザーを読み書きできる、簡単なモデルベースのAPIを作成する。

2.1 設定

REST framework API のためのグローバル設定はすべて、REST_FRAMEWORK に保持される。settings.py モジュールに以下を追記する。

settings.py

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'
    ]
}

2.2 Djangoプロジェクトの準備

http://djangoproject.jp/doc/ja/1.0/ref/django-admin.html

データベースを作成し、スーパーユーザーを登録する。

AnacondaとSpyderでDjango REST 開発環境を整える でしたように、Anacondaの環境から、ターミナルを起動する。

manage.py の HELP を 確認 python manage.py –help

(C:\Programs\Anaconda3\envs\webapp) C:\Users\piroto\Documents\Spyder\WebApp\restsample>python manage.py --help

Type 'manage.py help ' for help on a specific subcommand.

Available subcommands:

[auth]
    changepassword
    createsuperuser

[django]
    check
    compilemessages
    createcachetable
    dbshell
    diffsettings
    dumpdata
    flush
    inspectdb
    loaddata
    makemessages
    makemigrations
    migrate
    sendtestemail
    shell
    showmigrations
    sqlflush
    sqlmigrate
    sqlsequencereset
    squashmigrations
    startapp
    startproject
    test
    testserver

[sessions]
    clearsessions

[staticfiles]
    collectstatic
    findstatic
    runserver

データベースの作成

settings.pyの記述に従い、データベースを作成する。デフォルトのままsqlite を利用する

python manage.py migrate

https://docs.djangoproject.com/en/1.10/intro/tutorial02/

(C:\Programs\Anaconda3\envs\webapp) C:\Users\piroto\Documents\Spyder\WebApp\restsample>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sessions.0001_initial... OK

adminユーザーを作成

python manage.py createsuperuser

(C:\Programs\Anaconda3\envs\webapp) C:\Users\piroto\Documents\Spyder\WebApp\restsample>python manage.py createsuperuser
Username (leave blank to use 'piroto'):
Email address: pppiroto@gmail.com
Password:
Password (again):
Superuser created successfully.

2.2 動作確認

これで準備が整ったので、http://localhost:8000 にアクセスする。

API の説明が表示される

django_rest_api01

http://localhost:8000/users にアクセスすると、ユーザー情報が取得できる。

django_rest_api02

画面の下部には、フォームからユーザー登録を行うUIが存在する。

ただ、このUIからは、REST API を使用して登録しているわけではないようだ。

django_rest_api03

http://localhost:8080/users?format=json

でJSONが返ることを確認

django_rest_api04