为相同资源分隔POST访问URL

时间:2016-01-14 09:48:41

标签: django tastypie

我需要为用户创建和用户身份验证创建单独的POST方法

例如:http://localhost:8000/registerUser,它使用电子邮件,名称和密码来注册用户和另一个网址

例如:http://localhost:8000/authenticateUser whcih接收电子邮件和密码来验证用户

我可以通过覆盖“override_url”或“dispatch”方法来完成此操作吗?或任何其他方式

1 个答案:

答案 0 :(得分:1)

我认为,您所寻找的是prepend_url功能,请参阅here。您可以像这样使用它:

class AuthenticateUser(Resource)

    class Meta:
        resource_name = "authenticateUser"

    def prepend_urls(self):
        #add the cancel url to the resource urls
        return [
            url(r"^(?P<resource_name>%s)/(?P<pk>\w[\w/-]*)/register%s$" %
                (self._meta.resource_name, trailing_slash()),
                self.wrap_view('register'), name="api_authenticate_register"),
        ]

    def register(self, request, **kwargs):
        # check request
        self.method_check(request, allowed=['post'])
        # handle your request here, register user
        return self.create_response(request,  <some method>)

有了这个,你可以这样称呼它:

http://localhost:8000/authenticateUser # to authenticate
http://localhost:8000/authenticateUser/register # to register

另一种选择是,只创建两个资源(继承自另一个)并只更改元类中的resource_name