前回からの続きで、Pythonのコード修正、POSTMANで動作確認について説明します。
2. Pythonのコード修正
2.1. kinetise\settings.pyを修正します。以下、修正箇所の抜粋です。基本的には、KinetiseヘルプセンターのStarter SDKsの記述に従うのですが、Webサイトの内容を単純にコピーするとシングルクォートが全角になっていてエラーの原因になっていたりするので注意してください。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'comments',
'rest_framework',
]
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'
],
'DEFAULT_RENDERER_CLASSES': [
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
'rf_alter_api.renderers.AlterAPIRenderer'
],
'DEFAULT_PARSER_CLASSES': [
'rf_alter_api.parsers.AlterAPIParser',
],
'DEFAULT_AUTHENTICATION_CLASSES': [],
'DEFAULT_PERMISSION_CLASSES': [],
'EXCEPTION_HANDLER': 'rf_alter_api.views.alter_api_exception_handler',}
2.2. 仮想環境(env3)のコマンドプロンプトで python manage.py createsuperuserを実行します。以下、コマンドのログです。BluemixのPythonランタイムはOSログイン不可なので、このコマンドを実行することはできませんし、パスワードを引数にすることができないのでシェルに組み込むことも難しいです。従って、この作業で作成した管理者ユーザーは、BluemixのPythonランタイムで、そのまま使用されることになります。
(env3) C:\Users\hoge\workspace_env3\kinetise>python manage.py createsuperuser --username any --email any@any.com
Password:
Password (again):
Superuser created successfully.
(env3) C:\Users\hoge\workspace_env3\kinetise>
2.3. kinetise\commnets\models.pyにCommentというModelクラスを記述します。以下、記述箇所の抜粋です。
class Comment(models.Model):
author = models.CharField('Author', max_length=64)
message = models.CharField('Message', max_length=1024)
pub_date = models.DateTimeField('Date published', auto_now_add=True)
def __str__(self):
return self.author + ": " + self.message
Mobile Applicationに提供するJSONの要素を増やしたい場合は、Commentクラスに追記します。戻り値はadmin画面の行のラベルに使用するためですので、本質的には記述する必要はありません。以下の例では、message2という要素を追加しています。
class Comment(models.Model):
author = models.CharField('Author', max_length=64)
message = models.CharField('Message', max_length=1024)
pub_date = models.DateTimeField('Date published', auto_now_add=True)
message2 = models.CharField('Message2', max_length=1024)
def __str__(self):
return self.author + ": " + self.message + ": " + self.message2
2.4. kinetise\urls.pyにurlとビューの関連付けを記述します。KinetiseヘルプセンターのStarter SDKsの記述に従うのですが、上記2.3.のようにJSONの要素(message2)を追加した場合は、明示的にfieldsに追記します。以下は、修正箇所の抜粋です。
class CommentsSerializer(AlterAPISerializer):
context = serializers.SerializerMethodField()
class Meta:
model = Comment
fields = ('context', 'author', 'message', "pub_date", 'message2',)
2.5. comments\admin.pyをKinetiseヘルプセンターのStarter SDKsの記述に従って記述します。
2.6. kinetiseプロジェクトを右クリック、manage.py makemigrations commentsとmanage.py migrateを実行します。なお、Commentがsqlite3に、どの様に実装されているかを以下のコマンドで念のために確認します。これは、正常動作しない場合のエラー出力を理解する際の、助けになるかもしれません。
(env3) C:\Users\hoge\workspace_env3\kinetise>python manage.py sqlmigrate comments 0001
BEGIN;
--
-- Create model Comment
--
CREATE TABLE "comments_comment" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "author" varchar(64) NOT NULL, "message" varchar(1024) NOT NULL, "pub_date" datetime NOT NULL, "message2" varchar(1024) NOT NULL);
COMMIT;
(env3) C:\Users\hoge\workspace_env3\kinetise>
2.7. Eclipseからmanage.py runserver --noreloadを実行します。エラーが発生したら、ここまでの手順を見直してください。
3. POSTMANで動作確認
3.1. POSTMANを使用してGETとPOSTの動作を確認します。POSTについては、URLをhttp://127.0.0.1:8000/comments/
に指定し、BODYでrawとjson指定してSendし、Statusが200 OKならば正常動作しています。
GETについては、POST同様のURLを指定し、Statusが200 OKならば正常動作しています。
(補足) 正常動作しない場合は、今までの作業を見直すしかないのですが、ブラウザでhttp://127.0.0.1:8000/admin/
やhttp://127.0.0.1:8000/comments/
にアクセスしたり、Eclipseのコンソール出力を確認することも手助けになります。
これで、Pythonのコード修正、POSTMANで動作確認についての説明は終了です。次はBluemixのPythonランタイムへのデプロイを説明します。