需要在tastypie资源中获取当前用户的id而不需要请求对象

时间:2013-12-07 07:23:14

标签: python django tastypie

在我的django应用程序中,我需要在tastypie资源中获取当前用户的id(登录用户的id)。在这里,我无法访问请求对象,因为我遇到了问题。

以下是文件: myapi.py

from tastypie.resources import Resource

class Rating(Resource):
    def get_table(obj):
        table = Table(TABLE_NAME_2)
        return table

    class Meta:
        resource_name = 'rating'
        serializer = urlencodeSerializer()
        object_class = DynamoObject
        always_return_data = True
    def obj_get_list(self, bundle, **kwargs):
        table = self.get_table()
        ### need to get user_id from view
        user_id = 2
        items = table.query(user_id__eq = user_id, limit= 1 , consistent = True)
        items = [i for i in items]
        my_items = []
        if len(items) == 0:
            my_items.append(DynamoObject(initial={"photo_id": "0"}))
        else:
            for item in items:
                my_items.append(DynamoObject(initial=dict(item)))
        return my_items

我如何实现这一目标?

2 个答案:

答案 0 :(得分:4)

您可以从request参数访问bundle对象。然后你的代码变成

user_id = bundle.request.user.id

有关此对象的说明,请参阅bundle docs

答案 1 :(得分:-1)

我不知道你的情况是否可行,但你可以在控件使用django中的中间件进入API之前阅读请求内部。在中间件中读取请求对象后,您可以将其转发给API对象。 More on django middleware