You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DRF项目用django-phone-verify遇导入错误:找不到phone_verify.views模块

问题原因

django-phone-verify 并没有把 start_verification 方法放在 phone_verify.views 模块里,你用了错误的导入路径,才导致模块找不到的报错。

解决方案

1. 修正导入路径与调用逻辑

验证启动的核心逻辑在 phone_verify.services 模块中,修改你的 views.py 代码如下:

from rest_framework.decorators import api_view
from rest_framework.response import Response
from phone_verify.services import PhoneVerificationService
from phone_verify.exceptions import InvalidPhoneNumber

@api_view(['POST'])
def sign_in_sms(request):
    phone_number = request.data.get('phone_number')
    if not phone_number:
        return Response({'error': 'Phone number is required'}, status=400)
    
    try:
        # 初始化短信验证流程
        verification = PhoneVerificationService.initiate_verification(
            phone_number=phone_number,
            method='sms'
        )
        return Response({'success': 'Verification started', 'session_token': verification.session_token})
    except InvalidPhoneNumber:
        return Response({'error': 'Invalid phone number format'}, status=400)

@api_view(['POST'])
def sign_in_phone_call(request):
    phone_number = request.data.get('phone_number')
    if not phone_number:
        return Response({'error': 'Phone number is required'}, status=400)
    
    try:
        # 初始化语音电话验证流程
        verification = PhoneVerificationService.initiate_verification(
            phone_number=phone_number,
            method='call'
        )
        return Response({'success': 'Verification started', 'session_token': verification.session_token})
    except InvalidPhoneNumber:
        return Response({'error': 'Invalid phone number format'}, status=400)

2. 完善配置参数

确保 settings.py 里的 PHONE_VERIFICATION 配置格式正确,号码要带国际区号:

PHONE_VERIFICATION = {
    'FROM_NUMBER': '+1234567890',  # 用国际标准格式的号码
    'TWILIO_ACCOUNT_SID': '你的Twilio SID',
    'TWILIO_AUTH_TOKEN': '你的Twilio Auth Token',
    'BACKEND': 'phone_verify.backends.twilio.TwilioBackend',  # 显式指定后端,避免歧义
    'OPTIONS': {
        'site_name': '你的站点名称',
        'length': 6,  # OTP验证码长度
        'valid_window': 120,  # OTP有效期(秒)
    }
}

3. 可选:直接用库自带的视图

django-phone-verify 已经封装好了验证启动和校验的完整视图,你可以直接用它的URL配置,不用自己写视图:
项目 urls.py 里保留这段配置即可:

path('phone-verify/', include('phone_verify.urls')),

之后直接调用 /phone-verify/start/ 接口,传入 phone_number 和 method 参数就能启动验证,省得自己重复写逻辑。

额外提醒
  • 先升级到最新版库:执行 pip install --upgrade django-phone-verify
  • 测试前确认Twilio账号已激活、余额充足,能正常发送短信/语音电话

内容的提问来源于stack exchange,提问作者Rafi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 11:53:23