Python3 bpmappingでHTMLパラメータとjsonデータ間のマッピング 1

しばらくはpythonモジュールのお勉強。

[amazonjs asin="B00XZTYMG6″ locale="JP" title="Pythonプロフェッショナルプログラミング 第2版"]

Bottleのようなシンプルなフレームワークでパラメータを渡す際に、マッピングがごちゃごちゃしてしまい、
うまくパラメータが拾えなくなってしまうことがある。
そんな時に、bpmappersモジュールが便利。

前提

ここの前提に基づいて以降の説明をしていく。

[shell]
$ pyvenv ~/bpmappers_python
$ source ~/bpmappers_python/bin/activate
(bpmappers_python)$ pip install –upgrade pip
(bpmappers_python)$ pip install bpmappers
(bpmappers_python)$ pip install ipython
[/shell]

 

マッピング

bpmapper.pyを作成して、以下を記述する。
[python]
# -*- coding: utf-8 -*-

from bpmappers import Mapper, RawField
import json

class User(object):
"""ユーザー情報"""

def __init__(self,
user_id,
user_name,
user_password,
user_sex,
user_age):

self.id = user_id
self.name = user_name
self.password = user_password
self.sex = user_sex
self.age = user_age

class Comment(object):
"""コメント情報"""
def __init__(self, id, user_id, comment):

self.comment_id = id
self.user = user_id
self.comment_text = comment

def get_user(user_id):

user = User(user_id=user_id,
user_name="umentu",
user_password="umentu_password",
user_sex="Man",
user_age=100)
return user

class UserMapping(Mapper):
"""ユーザー情報とjsonデータをマッピング"""
user_id = RawField("id")
user_name = RawField("name")
user_password = RawField("password")

class UserInfoMapping(UserMapping):
"""ユーザーの詳細情報とjsonデータをマッピング"""
user_sex = RawField("sex")
user_age = RawField("age")

if __name__ == '__main__’:

"""
get_userで定義されている値が
"""
user = get_user(20)

print("""—ユーザー情報をマッピングしたデータ—""")
user_dict = UserMapping(user).as_dict()
print(json.dumps(user_dict, indent=2))
print("")

print("""—ユーザーの詳細情報をマッピングしたデータ—""")
user_info_dict = UserInfoMapping(user).as_dict()
print(json.dumps(user_info_dict, indent=2))
print("")

[/python]

[shell]
(bpmappers_python) $ python bpmapper.py
—ユーザー情報をマッピングしたデータ—
{
"user_id": 20,
"user_password": "umentu_password",
"user_name": "umentu"
}

—ユーザーの詳細情報をマッピングしたデータ—
{
"user_name": "umentu",
"user_password": "umentu_password",
"user_id": 20,
"user_age": 100,
"user_sex": "Man"
}
[/shell]