1

ピラミッド トラバーサル アプリがあり、存在しない URI に PUT できるようにしたいと考えています。ビュー構成でこれを行う方法はありますか?

たとえば、私はこれを持っています

@view_defaults(context=models.Groups, renderer='json')
@view_config(request_method='GET')
class GroupsView(object):

    def __call__(self):
        ''' This URI corresponds to GET /groups '''
        pass

    @view_config(request_method='PUT')
    def put(self):
        ''' This URI should correspond to PUT /groups/doesnotexist '''
        pass

もちろん、プットは機能しません。コンテキストは で keyerror をスローしますがdoesnotexist、この場合、トラバーサーをビューに一致させるにはどうすればよいですか?

4

1 に答える 1

1

これは、コンテキストとコンテキストをGroup持つオブジェクトの個別のクラスのように聞こえます。ほとんどのビューは で動作しますが、オブジェクトの PUT 要求に応答する特別なメソッドを持つことができます。をサブクラス化しないでください。GroupUndefinedGroupGroupUndefinedGroupUndefinedGroupGroup

@view_defaults(context=Group, renderer='json')
class GroupView(object):
    def __init__(self, request):
        self.request = request

    @view_config(request_method='GET')
    def get(self):
        # return information about the group

    @view_config(context=UndefinedGroup, request_method='PUT')
    def put_new(self):
        # create a Group from the UndefinedGroup

    @view_config(request_method='PUT')
    def put_overwrite(self):
        # overwrite the old group with a new one

UndefinedGroup.が見つからない場合、トラバーサル ツリーはオブジェクトの作成を担当しますGroup

于 2013-02-07T05:13:59.953 に答える