Usersによるユーザー認証とエンティティ操作 (6/6)
作成:2010-01-03 19:29
更新:2010-05-10 21:39
更新:2010-05-10 21:39
■エンティティ編集のEditPageクラスの作成
では、コントローラー・クラスを作成します。main.pyに、以下に上げるリストを追記して、EditPageクラスを作成しましょう。そして、webapp.WSGIApplicationの作成部分を更に以下のように修正をします。
エンティティの編集は、postで行っています。編集作業は、「編集するエンティティを取得し、そのプロパティを変更してからsaveする」というものです。get_by_idで指定したIDのエンティティを取得し、そのname、messageプロパティを変更してからsaveすれば、エンティティを修正することができます。
これで、モデル操作の基本となる「作成」「リスト表示」「修正」「削除」の作業が作成できました。これらの操作は、「Create」「Read」「Update」「Delete」の頭文字をとって「CRUD」と呼ばれます。このCRUDは、データベースの操作の基本中の基本と言えるものです。これらが用意できれば、とりあえずデータベースの基礎はOK!といってよいでしょう。
application = webapp.WSGIApplication([これで完成です。今回は、getは@login_requiredアノテーションを使いました。先のDeletePageのgetと比べ、ログインの処理が簡潔になっていることがわかります。
('/', MainPage),
('/edit', EditPage),
('/del',DeletePage)
], debug=True)
エンティティの編集は、postで行っています。編集作業は、「編集するエンティティを取得し、そのプロパティを変更してからsaveする」というものです。get_by_idで指定したIDのエンティティを取得し、そのname、messageプロパティを変更してからsaveすれば、エンティティを修正することができます。
これで、モデル操作の基本となる「作成」「リスト表示」「修正」「削除」の作業が作成できました。これらの操作は、「Create」「Read」「Update」「Delete」の頭文字をとって「CRUD」と呼ばれます。このCRUDは、データベースの操作の基本中の基本と言えるものです。これらが用意できれば、とりあえずデータベースの基礎はOK!といってよいでしょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
class EditPage(webapp.RequestHandler):
@login_required
def get(self):
id = self.request.get('id')
if id:
data = MyData.get_by_id(long(id))
msg = 'このエンティティを編集します。'
else:
data = None
msg = '編集するエンティティのIDが指定されていません。'
params = {'data':data,
'message':msg}
fpath = os.path.join(os.path.dirname(__file__),'views','edit.html')
html = template.render(fpath,params)
self.response.headers['Content-Type'] = 'text/html'
self.response.out.write(html)
def post(self):
id = self.request.get('id')
nm = self.request.get('name')
msg = self.request.get('msg')
data = MyData.get_by_id(long(id))
data.name = nm
data.message = msg
data.save()
self.redirect('/')
※関連コンテンツ
「PythonによるGoogle App Engine(GAE)プログラミング入門」に戻る