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)
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)