Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django Rest框架中使用手机号码登录。_Python_Django_Rest - Fatal编程技术网

Python 如何在Django Rest框架中使用手机号码登录。

Python 如何在Django Rest框架中使用手机号码登录。,python,django,rest,Python,Django,Rest,我们使用django rest框架作为登录模块,带有电话号码 要对其进行身份验证,我想使用OTP(一次性密码)。 如何做到这一点 这可以使用rest框架的auth令牌来完成。 但这似乎不是个好主意 任何其他方法。 请提供帮助。要让mobile和otp与您的项目配合使用,您需要创建您的withmobileasusername和otpaspassword字段 创建自己的用户模型后,您可以在创建用户实例后使用移动和otp 您可以创建两个简单视图,用户输入有效的手机号码后首先生成otp,另一个视图验证o

我们使用django rest框架作为登录模块,带有电话号码

要对其进行身份验证,我想使用OTP(一次性密码)。 如何做到这一点

这可以使用rest框架的auth令牌来完成。 但这似乎不是个好主意

任何其他方法。
请提供帮助。

要让mobile和otp与您的项目配合使用,您需要创建您的with
mobile
as
username
otp
as
password
字段

创建自己的
用户
模型后,您可以在创建
用户
实例后使用移动和otp

您可以创建两个简单视图,用户输入有效的手机号码后首先生成otp,另一个视图验证otp,在响应中发送
令牌

示例

# views

@api_view(['POST'])
def generate_otp(request):
    mobile = request.data.get('mobile', None)
    if mobile:
         otp = random.randrange(lower_limit, upper_limit+1)
         User.objects.create(mobile=mobile, otp=otp)
         return Response({'success': True})
    else:
         ...

@api_view(['POST'])
def verify_otp(request):
    mobile = ...
    otp = request.data.get('otp', None)
    if mobile and otp:
        try:
            user = User.objects.get(mobile=mobile, otp=otp)
        except User.DoesNotExist:
            return Response({'message': 'Invalid OTP'})

        token = Token.objects.create(user=user)
        return Response({'token': token})
     else:
        ...

这是基于
rest\u framework authtoken
,如果您愿意,也可以使用。

是否使用基于令牌的身份验证?是。我也在用同样的方法。你知道如何只使用手机登录而不使用手机登录来实现jwt吗password@user190549张贴一个新问题,明确说明你需要帮助的地方。