Kayのgeneric view groupsのURLマッピングを変更する。

前回の続き
Kayのgeneric view groupsのURLマッピングを変更する方法。

CRUDViewGroupのrule_template属性を修正することで、URLマッピングを変更することができます。

CRUDViewGroupではrule_templateは次のようになっています。

endpoints = {
  'list': "list_$model",
  'show': "show_$model",
  'create': "create_$model",
  'update': "update_$model",
  'delete': "delete_$model",
}

OP_LIST = 'list'
OP_SHOW = 'show'
OP_CREATE = 'create'
OP_UPDATE = 'update'
OP_DELETE = 'delete'

class CRUDViewGroup(ViewGroup):
  …
  rule_template = RuleTemplate([
    Rule('/$model/list', endpoint=endpoints[OP_LIST]),
    Rule('/$model/list/<cursor>', endpoint=endpoints[OP_LIST]),
    Rule('/$model/show/<key>', endpoint=endpoints[OP_SHOW]),
    Rule('/$model/create', endpoint=endpoints[OP_CREATE]),
    Rule('/$model/update/<key>', endpoint=endpoints[OP_UPDATE]),
    Rule('/$model/delete/<key>', endpoint=endpoints[OP_DELETE]),
  ])

これを元に、rule_templateを変更します。

myapp/urls.py

class MyCRUDViewGroup(generics.CRUDViewGroup):
    …
    rule_template = RuleTemplate([
        Rule('/foo/$model/list', endpoint='list_$model'),
        Rule('/foo/$model/list/<cursor>', endpoint='list_$model'),
        Rule('/foo/$model/show/<key>', endpoint='show_$model'),
        Rule('/foo/$model/create', endpoint='create_$model'),
        Rule('/foo/$model/update/<key>', endpoint='update_$model'),
        Rule('/foo/$model/delete/<key>', endpoint='delete_$model'),
    ])

テンプレートファイルは変更しなくても、リンク先はちゃんと変更されていました。
よくできていますね。

2010年6月8日 追記
CRUDViewGroup の場所が変更になりました。(参考:CRUDViewGroup を移動しました – kay-users-ja | Google グループ)

変更前 => kay.generics.CRUDViewGroup
変更後 => kay.generics.crud.CRUDViewGroup

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください