2

我只是从 Python 和 Django 开始,并使用 sweetpie 创建一个 RESTful API。

我需要根据经过身份验证的用户计算资源的字段,我计划在我的资源中覆盖 dehydrate_field 方法,但我不知道如何在 dehydrate_field 方法中获取经过身份验证的用户。

我正在使用tastepie的ApiKeyAuthentication,我目前正在URL的查询字符串中传递身份验证参数,但我也希望能够在身份验证标头中传递身份验证参数。

我想我应该能够自己从查询字符串或授权标头中获取用户名,并找到用户,但我觉得它已经在某处的美味派中实现了,但我找不到它文档。

这是一些示例代码:

class MyModelResource(ModelResource):

    calculated_field = fields.BooleanField(readonly=True)

    class Meta:
        queryset = MyModel.objects.all()
        resource_name = 'mymodel'
        authentication = ApiKeyAuthentication()     

    def dehydrate_calculated_field(self, bundle):
        user = <get authenticated user somehow>
        return <some boolean that's calculated depending on authenticated user>

我想知道tastepie是否有一些内置功能来获取经过身份验证的用户,或者根据查询字符串参数或标题字段来滚动我自己的正确方法。

4

3 回答 3

4

我找到了问题的答案,以获取我正在做的当前用户

user = bundle.request.user

感谢Aidan Ewen为我指明了正确的方向。

于 2013-01-20T16:11:28.377 回答
0

我对 Tastypie 不是很熟悉,但我认为 Tastypie Resource 是基于django 类的 view。在这种情况下,您应该能够让用户使用

user = self.request.user

于 2013-01-20T15:46:14.647 回答
0

我对查询集使用按请求更改

class CurrentUserResource(ModelResource):
    class Meta:
        queryset = User.objects.all()
        resource_name = 'current-user'

    def get_object_list(self, request):
        users = super(CurrentUserResource, self).get_object_list(request)
        return users.filter(id=request.user.id)
于 2016-03-07T21:14:07.737 回答