前回の続き。
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