【问题标题】:How can i save generate otp code in django如何在 django 中保存生成 otp 代码
【发布时间】:2020-05-01 04:43:56
【问题描述】:

我通过电话号码注册用户作为用户名。当我输入电话号码时,会生成一个 otp 号码并将其保存在数据库中。我已经生成了选择号码,但我无法保存它。那么,如何保存呢?

我的 serializers.py 文件

class AccountsSerializer(serializers.ModelSerializer):
    def validate_phone_number(self, phone_number):
        if phone_number:
            MOBILE_REGEX = re.compile('^(?:\+?88)?01[13-9]\d{8}$')
            if MOBILE_REGEX.match(phone_number):
                return (phone_number)
            else:
                raise serializers.ValidationError('No. not matching')
        else:
            raise serializers.ValidationError('Please enter a number')

    def generate_otp(self):
        otp = randint(000000, 999999)
        return otp

    class Meta:
        model = TempRegistration
        fields = ['phone_number']

views.py

class GetPhoneNumber(CreateAPIView):
    queryset = TempRegistration.objects.all()
    serializer_class = AccountsSerializer

models.py

class TempRegistration(models.Model):
    phone_number = models.CharField(max_length=45)
    otp_code = models.CharField(max_length=6)

    def __str__(self):
        return self.phone_number

【问题讨论】:

    标签: django django-models django-rest-framework django-views django-class-based-views


    【解决方案1】:

    覆盖 GetPhoneNumber 视图的 perform_create(...) 方法

    class GetPhoneNumber(CreateAPIView):
        queryset = TempRegistration.objects.all()
        serializer_class = AccountsSerializer
    
        def perform_create(self, serializer):
            serializer.save(otp_code=randint(000000, 999999))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-22
      • 1970-01-01
      • 2020-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多