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 の説明が表示される
http://localhost:8000/users にアクセスすると、ユーザー情報が取得できる。
画面の下部には、フォームからユーザー登録を行うUIが存在する。
ただ、このUIからは、REST API を使用して登録しているわけではないようだ。
http://localhost:8080/users?format=json
でJSONが返ることを確認