#用户注册修改

This commit is contained in:
xieshen 2020-10-14 16:02:25 +08:00
parent cdb3eb216b
commit e79398713f
3 changed files with 112 additions and 37 deletions

View File

@ -610,4 +610,4 @@ class News(models.Model):
class CheckCode(models.Model): class CheckCode(models.Model):
phone_code = models.CharField('手机验证码',max_length=256,null=True,blank=True) phone_code = models.CharField('手机验证码',max_length=256,null=True,blank=True)
phone = models.CharField('电话号',max_length=256,null=True,blank=True) phone = models.CharField('电话号',max_length=256,null=True,blank=True)
c_time = models.DateField('时间',null=True,blank=True) c_time =models.DateTimeField('时间', auto_now_add=True)

View File

@ -57,14 +57,16 @@
class="login loginpage col-lg-offset-4 col-lg-4 col-md-offset-3 col-md-6 col-sm-offset-3 col-sm-6 col-xs-offset-2 col-xs-8"> class="login loginpage col-lg-offset-4 col-lg-4 col-md-offset-3 col-md-6 col-sm-offset-3 col-sm-6 col-xs-offset-2 col-xs-8">
<h1><a href="#" title="Login Page" tabindex="-1">Ultra Admin</a></h1> <h1><a href="#" title="Login Page" tabindex="-1">Ultra Admin</a></h1>
<form name="loginform" id="loginform" action="{% url 'dashboard-login-for-phone' %}" method="post">{% csrf_token %} <form name="loginform" id="loginform" action="{% url 'dashboard-login-for-phone' %}"
method="post">{% csrf_token %}
<p> <p>
<label for="user_login">手机号<br/> <label for="user_login">手机号<br/>
<input type="text" name="username" id="user_login" class="input" size="20" placeholder="请输入手机号"/><button type="button" class="btn btn-success">获取验证码</button></label> <input type="text" name="phone" id="phone" class="input" size="20" placeholder="请输入手机号"/><input
class="btn btn-success" type="button" id="code" value="获取验证码"></label>
</p> </p>
<p> <p>
<label for="user_pass">验证码<br/> <label for="user_pass">验证码<br/>
<input type="text" name="password" id="user_pass" class="input" size="20" <input type="text" name="check_code" id="check_code" class="input" size="20"
placeholder="请输入验证码"/></label> placeholder="请输入验证码"/></label>
</p> </p>
@ -76,7 +78,7 @@
</form> </form>
<p id="nav"> <p id="nav">
<a class="pull-left" href="#" title="Password Lost and Found">忘记密码</a> <a class="pull-left" href="#" title="Password Lost and Found">忘记密码</a>
<a href="#" title="Password Lost and Found" style="margin-left: 30%">账号登录</a> <a href="#" title="Password Lost and Found" style="margin-left: 30%">账号登录</a>
<a class="pull-right" href="{% url 'dashboard-register' %}" title="Sign Up">注册</a> <a class="pull-right" href="{% url 'dashboard-register' %}" title="Sign Up">注册</a>
</p> </p>
@ -125,9 +127,58 @@
img = $(".captcha"); img = $(".captcha");
id_captcha_0.attr("value", new_cptch_key); id_captcha_0.attr("value", new_cptch_key);
img.attr("src", new_cptch_image); img.attr("src", new_cptch_image);
}); });
}); });
var check = false;
$('#phone').blur(function () {
var a = $(this).val();
e = /^1[34578]\d{9}$/;
if (!e.test(a)) {
check = false
} else {
check = true;
}
});
$('#code').click(function () {
if (check) {
$.ajax({
type: 'post',
url: '/author/code/',
data: {
csrfmiddlewaretoken: $('[name="csrfmiddlewaretoken"]').val(),
mobile: $('#phone').val()
},
success: function (ad) {
alert('验证码已发至您的手机,请查收!!!')
},
error: function (){
alert('验证码已发至您的手机,请查收!!!')
}
})
} else (alert('请输入正确的手机号'))
});
}) })
var countdown = 60
function settime(obj) {
if (countdown == 0) {
obj.removeAttribute('disable');
obj.value = '免费获取验证码';
countdown = 60;
return;
} else {
obj.setAttribute('disable', true);
obj.value = '重新发送(' + countdown + ")";
countdown--;
}
setTimeout(function () {
settime(obj)
}
, 1000)
}
</script> </script>
{% endblock %} {% endblock %}

View File

@ -85,22 +85,45 @@ def user_login(request):
messages.error(request, '账号或密码错误,请您确认账号和密码') messages.error(request, '账号或密码错误,请您确认账号和密码')
return render(request, 'dashboard/login.html', {'hash_key': hash_key, 'image_url': image_url}) return render(request, 'dashboard/login.html', {'hash_key': hash_key, 'image_url': image_url})
def user_login_for_phone(request): def user_login_for_phone(request):
if request.method == 'GET': if request.method == 'GET':
return render(request,'dashboard/login-for-phone.html') return render(request, 'dashboard/login-for-phone.html')
elif request.method == 'POST': elif request.method == 'POST':
p_code = request.POST.get('check_code') p_code = request.POST.get('check_code')
phone = request.POST.get('phone') phone = request.POST.get('phone')
try: print(phone, p_code)
results = CheckCode.objects.filter(phone=18119305139).count()
print(str(results) + "11111111111111111")
# try:
if results > 0:
check_code = CheckCode.objects.get(phone_code=p_code, phone=phone) check_code = CheckCode.objects.get(phone_code=p_code, phone=phone)
if float(time.time()) - float(check_code.c_time) > 60: if User.objects.filter(username=phone).count() > 0:
check_code.delete() user = User.objects.get(username=phone)
return '验证码超时已被删除' login(request, user, backend='django.contrib.auth.backends.ModelBackend')
print(21333333333) # check_code.delete()
check_code.delete() return HttpResponseRedirect('/index/')
return '登录成功' else:
except: user = User(username=phone)
user.save()
userprofile = Userprofile(user_id=user.id, image='default.png')
userprofile.save()
u = authenticate(username=phone)
login(request, u, backend='django.contrib.auth.backends.ModelBackend')
return HttpResponseRedirect('/index/')
# if float(time.time()) - float(check_code.c_time) > 60:
# check_code.delete()
# return '验证码超时已被删除'
# print(21333333333)
#
# except:
else:
print(1233333333) print(1233333333)
messages.error(request, '请输入正确的验证码!!!')
return render(request, 'dashboard/login-for-phone.html')
def author_code(request): def author_code(request):
sms_host = "sms.yunpian.com" sms_host = "sms.yunpian.com"
voice_host = "voice.yunpian.com" voice_host = "voice.yunpian.com"
@ -110,18 +133,21 @@ def author_code(request):
version = "v2" version = "v2"
# 模板短信接口的URI # 模板短信接口的URI
sms_tpl_send_uri = "/" + version + "/sms/tpl_single_send.json" sms_tpl_send_uri = "/" + version + "/sms/tpl_single_send.json"
# if request.method == 'GET':
# phone = request.POST.get('phone')
apikey = "304eb08353f7ebf00596737acfc31f53" apikey = "304eb08353f7ebf00596737acfc31f53"
mobile = "18119305139" # mobile = "18119305139"
tpl_id = 4041392 mobile = request.POST.get('mobile')
print(str(mobile) + "99999999999999999999999999999999999999999")
tpl_id = 4045320
str = "" code = ""
for i in range(6): for i in range(6):
ch = chr(random.randrange(ord('0'), ord('9') + 1)) ch = chr(random.randrange(ord('0'), ord('9') + 1))
str += ch code += ch
print(str) print(code)
tpl_value = {'#dateStart#': '10月1日', '#dateEnd#': '10日', '#type#': '微信公众号', '#name#': str} # tpl_value = {'#dateStart#': '10月1日', '#dateEnd#': '10日', '#type#': '微信公众号', '#name#': code}
tpl_value = {'#code#':code}
params = parse.urlencode({ params = parse.urlencode({
'apikey': apikey, 'apikey': apikey,
'tpl_id': tpl_id, 'tpl_id': tpl_id,
@ -136,21 +162,18 @@ def author_code(request):
conn.request("POST", sms_tpl_send_uri, params, headers) conn.request("POST", sms_tpl_send_uri, params, headers)
response = conn.getresponse() response = conn.getresponse()
response_str = response.read() response_str = response.read()
try:
check_code = CheckCode.objects.get(phone=mobile)
check_code.phone_code = code
check_code.save()
except:
print(code, mobile, 1111111111)
check_code = CheckCode(phone_code=code, phone=mobile)
check_code.save()
conn.close() conn.close()
return response_str return response_str
# return HttpResponse('ok')
# a = YunPian(settings.API_KEY)
# a.send_sms(phone_code, mobile)
# try:
# check_code = CheckCode.objects.get(phone=mobile)
#
# check_code.phone_code = phone_code
# check_code.save()
# except:
# print(phone_code, mobile, 1111111111)
# check_code = CheckCode(phone_code=phone_code, phone=mobile)
# check_code.save()
# return JsonResponse({'data': '验证码发送成功'})
def user_logout(request): def user_logout(request):
logout(request) logout(request)
return HttpResponseRedirect('/') return HttpResponseRedirect('/')
@ -232,7 +255,8 @@ def register(request):
# user.is_staff = True # user.is_staff = True
# user.first_name = phone # user.first_name = phone
userprofile = Userprofile(name=name, image=image, user_id=user.id, organization_id=user_organization, sex=sex, status=0) userprofile = Userprofile(name=name, image=image, user_id=user.id, organization_id=user_organization,
sex=sex, status=0)
userprofile.save() userprofile.save()
user.save() user.save()