django 에서 핸드폰 인증 코드 를 보 내 는 예시 코드

1.절차 분석:
1.사용 자 는 프로젝트 전단 에 핸드폰 번 호 를 입력 한 다음 에[인증 코드 획득]을 클릭 하여 핸드폰 번 호 를 post 로 보 냅 니 다.
2.배경 에서 핸드폰 번호 가 합 법 적 인지,점용 되 었 는 지 확인 하고,인증 을 통과 하면 인증 번 호 를 생 성하 고,스 크 립 트 를 실행 하여 문자 운영 자가 이 핸드폰 번호 로 이 인증 번 호 를 보 내 도록 하고,인증 을 통과 하지 않 으 면 오류 메 시 지 를 되 돌려 줍 니 다.
3.사용자 가 문자 인증 번 호 를 받 은 후에 모든 정 보 를 백 스테이지 에 다시 게시 합 니 다.
4.백 스테이지 에서 각 데 이 터 를 검증 하고 검증 을 통과 하면 실명 제 인증 을 완료 하 며 통과 하지 않 으 면 오류 정 보 를 되 돌려 줍 니 다.
총괄,실명 검증 1 회,ajax+post 2 회 필요
2.도 킹 메 신 저:
1.구름 그물 끝 에서:
1.구름 그물 등록
주소
백그라운드 관리 콘 솔 페이지:그 중에서 가장 중요 한 정 보 는 APIKEY 입 니 다.

2.개발 자 등록,서명 추가,템 플 릿 추가(템 플 릿 관리)
1.클 라 우 드 스크린 백 스테이지[테스트]는 의미 가 없다.테스트 란 바로 핸드폰 에 문자 메 시 지 를 보 내 는 것 이다.이게 무슨 테스트 야?
2.[서명/템 플 릿 장치]페이지,[서명 관리]를 클릭 하면[추가 서명]을 보완 하 라 는 알림 을 받 습 니 다.인증 은 개발 자의[회사]와[개인]으로 나 뉘 는데 지금 은 개발 테스트 단계 입 니 다.먼저[개인],[개인]신분증 을 원 하 는 사진 을 선택 하여 사진 을 제출 할 수 있 습 니 다.
3.인증 이 완 료 된 문자 통 지 를 기다 린 다음 에 백 스테이지 의 작업 안내 에 따라[서명 관리]페이지[서명 추가],[템 플 릿 관리]페이지[템 플 릿 추가]에서 모두 클 라 우 드 네트워크 의 심 사 를 기 다 려 야 한다.심 사 를 통과 하면 문자 알림 이 있다.

4.클 라 우 드 스크린 백 스테이지 에 ip 화이트 리스트 를 설정 하고 외부 네트워크 ip 을 화이트 리스트 에 추가

이 컴퓨터 의 외부 네트워크 ip 를 얻 는 가장 간단 한 방법 은 바로 바 이 두 ip 이다.

2.django 프로젝트 에 문자 보 내 는 스 크 립 트 쓰기
프로젝트 디 렉 터 리 에 utils 디 렉 터 리 를 새로 만 듭 니 다.yunpian.py

import requests
class YunPian(object):
  def __init__(self,api_key):
    self.api_key=api_key
    self.single_send_url='https://sms.yunpian.com/v2/sms/single_send.json'

  def send_sms(self,code,mobile):
    parmas={
      'apikey':self.api_key,
      'mobile':mobile,
      'text':'【** 】      [code]。      ,      '.format(code=code)
    }
    #text                  ,       !
    r=requests.post(self.single_send_url,data=parmas)
    print(r)

if __name__=='__main__':
  yun_pian=YunPian('***************(  apikey)')
  yun_pian.send_sms('***(   )','*******(   )')

3.프로젝트 에 핸드폰 인증번호 와 관련 된 코드 를 적 습 니 다.
1.전단 관련 코드:

<!--         -->
<script type="text/javascript">
var countdown=60;
function settime(obj) {
  if (countdown == 0) {
    obj.removeAttribute("disabled");
    obj.value="       ";
    countdown = 60;
    return;
  } else {
    obj.setAttribute("disabled", true);
    obj.value="    (" + countdown + ")";
    countdown--;
  }
setTimeout(function() {
  settime(obj) }
  ,1000)
}

</script>


<!--         -->

<div class="form-group">
          <label for="mobile" class="col-lg-2 col-sm-2 control-label">    :</label>
          <div class="col-lg-10">
            <div class="input-group m-bot15">
          <input type="text" class="form-control" id="mobile" name="mobile" placeholder="    ">
          <span class="input-group-btn">
             <input type="button" id="forcode" onclick="settime(this)" value="       " class="btn btn-success">
          </span>
            </div>
          <p class="help-block">        </p>
          </div>
        </div>


<!--     ajax        -->
<script>
  $('#forcode').click(function () {
    $.ajax({
      cache:false,
      type:"POST",
      url:"{% url 'users:forcode' %}",
      data:{
        csrfmiddlewaretoken:$('[name="csrfmiddlewaretoken"]').val(),
        mobile:$("#mobile").val()
      },
      async:true,
      success:function (data) {
        alert(data)
      }
    })
  })
</script>

효과 그림:

2.users/views.py 에 인증번호 보 내기 관련 코드 쓰기:

import re
import random
from xyw.settings import APIKEY
from .models import VerifyCode


class ForCodeView(View):
  """       """
  def post(self,request):
    mobile=request.POST.get('mobile','')
    if mobile:
      #          
      mobile_pat=re.compile('^(13\d|14[5|7]|15\d|166|17\d|18\d)\d{8}$')
      res=re.search(mobile_pat,mobile)
      if res:
        #       
        code=VerifyCode()
        code.mobile=mobile
        c=random.randint(1000,9999)
        code.code=str(c)
        code.save()
        code=VerifyCode.objects.filter(mobile=mobile).first().code
        yunpian=YunPian(APIKEY)
        sms_status=yunpian.send_sms(code=code,mobile=mobile)
        msg=sms_status.msg
        return HttpResponse(msg)
      else:
        msg='         !'
        return HttpResponse(msg)
    else:
      msg='       !'
      return HttpResponse(msg)

3.users/urls.py 에서:

from .views import ForCodeView
......

urlpatterns = [

  ......
  path('forcode/',ForCodeView.as_view(),name='forcode'),
]

4.settings.py 에 코드 추가:

#   apikey
APIKEY=‘     apikey'
이로써 휴대 전화 인증번호 발송 기능 이 완료 됐다.
사실 최적화 할 수 있 는 부분도 있다.
1.전단 에 60 초 를 설정 해 야 다시 보 낼 수 있 지만 이 인증 은 백 엔 드 에 도 있어 야 합 니 다.
2.핸드폰 번호 가 이미 인증번호 가 발송 되 었 는 지 검증 하지 않 았 음
3.인증 코드 는 수명 주기 가 없 으 므 로 일정 시간 마다 인증 코드 를 무효 화해 야 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기