Django + JQMobile + PhoneGap

时间:2012-11-26 09:34:10

标签: django cordova jquery-mobile

我一直在开发一款移动应用来访问我的django网站。我使用TastyPie完成了restful API并使用JQMobile开发了前端。我来到了我想要记录用户并可以访问该登录用户的部分。

我做了很多阅读和搜索,但我仍然不确定什么是最好的方法。理想情况下,我想用用户名和密码登录用户,然后过滤一些API返回的数据(我可以通过TastyPie文档完成)。

其他人如何使用JQMobile和Django接近对用户进行身份验证。我也在使用PhoneGap,因此如果需要,我可以从本地存储中的登录存储返回的用户信息。但是我不太确定如何将所有代码编码在一起,以便在移动用户使用该应用程序时在django端提供request.user。

到目前为止,我已经在TastyPie方面的UserResource中的另外几个帖子中提出了这个问题,以便用户登录。但是我不确定用户登录后该怎么做。

class UserResource(ModelResource):
    class Meta:
        queryset = User.objects.all()
        resource_name = 'user'
        list_allowed_methods = ['get', 'post']

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

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

        # Per https://docs.djangoproject.com/en/1.3/topics/auth/#django.contrib.auth.login...
        username = request.GET['username']
        password = request.GET['password']
        user = authenticate(username=username, password=password)

        if user is not None:
            if user.is_active:
                login(request, user)
                return self.create_response(request, {'success': True})
            else:
                # Return a 'disabled account' error message
                return self.create_response(request, {'success': False})
        else:
            # Return an 'invalid login' error message.
            return self.create_response(request, {'success': False})

是否有人可以共享任何代码,或者有关如何登录用户并维护其状态的指示?

干杯, 本

1 个答案:

答案 0 :(得分:1)

Phonegap实际上只是一个包含在某些本机代码中的浏览器,这意味着它具有与普通网络浏览器相同的方式来保持会话 - cookies!

发送到后端API的每个ajax请求都可以包含sessionid Cookie,就像普通的GET请求一样。您可以在视图中使用requst.user对象。

您无需构建任何特殊内容或使用localstorage。 verify is that your domain is whitelisted唯一可以让您的应用访问它。