欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)邀請碼778899分享:django-短信登錄

柚子快報(bào)邀請碼778899分享:django-短信登錄

http://yzkb.51969.com/

1.前端代碼

Title

短信登錄

{% csrf_token %}

{% for field in form %}

{% if field.name == "code" %}

{{ field }}

{{ filed.errors.0 }}

{% else %}

{{ field }}

{{ filed.errors.0 }}

{% endif %}

{% endfor %}

用戶登錄

2.后端代碼

? ?2.2.1視圖函數(shù)

sms_login函數(shù)是短信登錄的邏輯。

sms_send函數(shù)是獲取點(diǎn)擊短信驗(yàn)證碼,校驗(yàn)我表單中手機(jī)號(hào)是否填的正確,后調(diào)用第三方的sdk(騰訊云或者阿里云)來發(fā)送短信,獲取了短信在Redis中緩存等待用戶輸入校驗(yàn)。

def sms_login(request):

res = BaseRespone()

if request.method == 'GET':

form = SmsLoginForm()

return render(request, 'sms_login.html', {"form": form})

print(request.POST)

form = SmsLoginForm(request.POST)

if not form.is_valid():

res.msg = form.errors

return JsonResponse(res.dirt)

mobile = form.cleaned_data['mobile']

code = form.cleaned_data['code']

role = form.cleaned_data['role']

# 驗(yàn)證redis緩存的code跟我輸入的code一不一樣

conn = get_redis_connection("default")

cache_code = conn.get(mobile)

if not cache_code:

res.msg = {"code": ["短信驗(yàn)證碼錯(cuò)誤"]}

return JsonResponse(res.dirt)

res.status = True

if code != cache_code.decode("utf-8"):

res.msg = {"code": ["短信驗(yàn)證碼錯(cuò)誤"]}

return JsonResponse(res.dirt)

if role == "1":

user_object = models.Administrator.objects.filter(active=1, mobile=mobile).first()

else:

user_object = models.Customer.objects.filter(active=1, mobile=mobile).first()

if not user_object:

res.msg = {"mobile": ["手機(jī)號(hào)不存在"]}

return JsonResponse(res.dirt)

mapping = {"1": "ADMIN", "2": "CUSTOMER"}

request.session['user_info'] = {'role': mapping[role], 'name': user_object.username, 'id': user_object.id}

res.status = True

res.data = settings.LOGIN_HOME

return JsonResponse(res.dirt)

def sms_send(request):

res = BaseRespone()

form = MobileForm(data=request.POST)

if not form.is_valid():

res.msg = form.errors

return JsonResponse(res.dirt, json_dumps_params={"ensure_ascii": False})

mobile = form.cleaned_data['mobile']

# 調(diào)用騰訊云的SDK要用到手機(jī)號(hào)

# 假短信驗(yàn)證碼

sms_code = random.randint(1000, 9999)

conn = redis.Redis(host='192.168.110.131', port=6379, password='', encoding='utf-8')

conn.set('18888888889', sms_code, ex=60)

value = conn.get('18888888889')

if value:

res.status = True

return JsonResponse(res.dirt, json_dumps_params={"ensure_ascii": False})

?2.2.2 froms組件

class SmsLoginForm(forms.Form):

role = forms.ChoiceField(

label="角色",

choices=(("2", "客戶"), ("1", "管理員")),

widget=forms.Select(attrs={"class": "form-control"})

)

mobile = forms.CharField(

label="手機(jī)號(hào)",

validators=[RegexValidator(r'^1[358]\d{9}$', '手機(jī)格式錯(cuò)誤'), ],

widget=forms.TextInput(attrs={"class": 'form-control', "placeholder": "手機(jī)號(hào)"})

)

code = forms.CharField(

label="短信驗(yàn)證碼",

validators=[RegexValidator(r'^[0-9]{4}$', '驗(yàn)證碼格式錯(cuò)誤'), ],

widget=forms.TextInput(attrs={"class": 'form-control', "placeholder": "短信驗(yàn)證碼"})

)

class MobileForm(forms.Form):

role = forms.ChoiceField(

label="角色",

required=True,

choices=(("2", "客戶"), ("1", "管理員")),

widget=forms.Select(attrs={"class": "form-control"})

)

mobile = forms.CharField(

label="手機(jī)號(hào)",

required=True,

validators=[RegexValidator(r'^1[358]\d{9}$', '手機(jī)格式錯(cuò)誤'), ]

)

def clean_mobile(self):

role = self.cleaned_data['role']

mobile = self.cleaned_data['mobile']

if not role:

return mobile

if role == '1':

exist = models.Administrator.objects.filter(active=1, mobile=mobile).exists()

else:

exist = models.Customer.objects.filter(active=1, mobile=mobile).exists()

if not exist:

raise ValidationError("手機(jī)號(hào)不存在")

return mobile

柚子快報(bào)邀請碼778899分享:django-短信登錄

http://yzkb.51969.com/

精彩文章

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19308493.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄