Python 向TastyPie操作响应添加完整资源

Python 向TastyPie操作响应添加完整资源,python,django,tastypie,Python,Django,Tastypie,我在api.py中定义了以下AuthResource。它接受对/auth/login操作的post请求,然后向用户返回其ApiKey,以便在设置了ApiKeyAuthentication的其余my资源上使用 class AuthResource(Resource): class Meta: authorization = Authorization() resource_name = 'auth' list_allowed_methods = ['post'] def

我在api.py中定义了以下AuthResource。它接受对/auth/login操作的post请求,然后向用户返回其ApiKey,以便在设置了ApiKeyAuthentication的其余my资源上使用

class AuthResource(Resource):
class Meta:
    authorization = Authorization()
    resource_name = 'auth'
    list_allowed_methods = ['post']

def prepend_urls(self):
    return [
        url(r"^(?P<resource_name>%s)/login%s$" %
            (self._meta.resource_name, trailing_slash()),
            self.wrap_view('login'), name="api_login")
    ]

def login(self, request, **kwargs):
    self.method_check(request, allowed=['post'])

    data = self.deserialize(request, request.body, format=request.META.get('CONTENT_TYPE', 'application/json'))

    email = data.get('email', '')
    password = data.get('password', '')

    user = authenticate(email=email, password=password)
    if user:
        if user.is_active:
            data = {'success': True, 'api_key': ApiKey.objects.get(user=user).key}
            return self.create_response(request, data)
        else:
            return self.create_response(request, {'success': False, 'reason': 'account_disabled'}, HttpForbidden)
    else:
        return self.create_response(request, {'success': False, 'reason': 'incorrect_login'}, HttpUnauthorized)
不幸的是,我在《邮递员》中收到了以下回复:

{"api_key": "XXXXXXXXXXXXXXXXXXXXXXXXXXX", "success": true, "user": "FirstName LastName"}
我知道这是我的用户模型的
\uuuu unicode\uuu
函数的值,但我真正想要的是完整的序列化对象。更像是:

{"api_key": "XXXXXXXXXXXXXXXXXXXXXXXXXXX", "success": true, "user": {'first_name': 'FirstName', 'last_name': 'LastName', 'email': 'email@example.com'}}

有什么想法吗?我想我不必这样做,我可以让客户端使用新获得的ApiKey向适当的UserResource提交另一个get请求,但就优化而言,这似乎是一个很容易实现的结果。我欢迎所有关于API设计的想法/最佳实践。

我对你的问题没有答案,但我想推荐一种可以让你轻松实现你想要的,并且你会喜欢这个框架的方法。谢谢@orokusaki,我离切换还有一点远,但我想我会在下一个项目中使用django restframework,因为它看起来更像django风格的框架。我首先遇到了tastypie,它似乎有足够的临界质量,值得学习。
{"api_key": "XXXXXXXXXXXXXXXXXXXXXXXXXXX", "success": true, "user": {'first_name': 'FirstName', 'last_name': 'LastName', 'email': 'email@example.com'}}