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

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'),
])

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

よくできていますね。