Esempio n. 1
0
 def post(self, request, format=None):
     '''
     第三方登录
     '''
     data = json.loads(request.body)
     external_source = data.get('external_source')
     external_id = data.get('external_id')
     nick_name = data.get('nick_name')
     # 直接获取用户,如果不存在,则创建
     try:
         e = External.objects.get(external_id=external_id, external_source=external_source)
         u = e.user
         token = Token.objects.get(user=u)
     except External.DoesNotExist:
         # 不存在这个第三方登录,先创建一个用户,再创建external
         username = '******' % random_str()
         u = Account.objects.create(
             username=username,
             password=random_str(num=32),
             phone=None,
             nick_name=nick_name,
             is_changed_nick=True)
         External.objects.create(
             user=u,
             external_source=external_source,
             external_id=external_id)
         token = Token.objects.create(user=u)
     result = AccountSerializer(u).data
     result['token'] = token.key
     return self.success_response(result)
Esempio n. 2
0
 def post(self, request, format=None):
     '''
     正常注册,需要手机号,密码
     '''
     data = json.loads(request.body)
     insert_data = dict()
     insert_data['nick_name'] = u'%s%s' % (random_str(scope='alphabet', num=5), random_str(scope='number', num=5))
     insert_data['username'] = '******' % insert_data['nick_name']  # username 没有用的,但是 User 里不能是空的,所以随机一下
     insert_data['password'] = data.get('password')
     insert_data['phone'] = data.get('phone')
     try:
         u = Account.objects.create(**insert_data)
     except IntegrityError:
         return self.fail_response(400, 'Phone registed')
     token = Token.objects.create(user=u)
     result = AccountSerializer(u).data
     result['token'] = token.key
     return self.success_response(result)