LoginSignup
2
2

More than 5 years have passed since last update.

IBM Bluemix KinetiseでMobile Applicaiton開発(2)

Last updated at Posted at 2015-12-19

前回からの続きで、Pythonのコード修正、POSTMANで動作確認について説明します。

2. Pythonのコード修正
2.1. kinetise\settings.pyを修正します。以下、修正箇所の抜粋です。基本的には、KinetiseヘルプセンターのStarter SDKsの記述に従うのですが、Webサイトの内容を単純にコピーするとシングルクォートが全角になっていてエラーの原因になっていたりするので注意してください。

setting.pyの抜粋
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クラスを記述します。以下、記述箇所の抜粋です。

models.pyの抜粋
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という要素を追加しています。

models.pyの抜粋
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に追記します。以下は、修正箇所の抜粋です。

urls.pyの抜粋
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を実行します。エラーが発生したら、ここまでの手順を見直してください。qiita投稿kinetise起動.png

3. POSTMANで動作確認
3.1. POSTMANを使用してGETとPOSTの動作を確認します。POSTについては、URLをhttp://127.0.0.1:8000/comments/に指定し、BODYでrawとjson指定してSendし、Statusが200 OKならば正常動作しています。
qiita投稿POSTでPOSTMAN.png

GETについては、POST同様のURLを指定し、Statusが200 OKならば正常動作しています。
qiita投稿GETでPOSTMAN.png
(補足) 正常動作しない場合は、今までの作業を見直すしかないのですが、ブラウザでhttp://127.0.0.1:8000/admin/http://127.0.0.1:8000/comments/にアクセスしたり、Eclipseのコンソール出力を確認することも手助けになります。

これで、Pythonのコード修正、POSTMANで動作確認についての説明は終了です。次はBluemixのPythonランタイムへのデプロイを説明します。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2