django生成登录随机图片验证码:http://www.cnblogs.com/wupeiqi/articles/4786251.html

def insert(request):
# print("email",request.POST.get("email"))
if request.method=="POST":
print(time.strftime("%Y-%m-%d %H:%M:%S"))
# login_tmp.objects.update(lastTime=datetime.datetime.now()+datetime.timedelta(hours=2))
# login_tmp.objects.update(firstTime=datetime.datetime.now())
rel=BaseResult()
obj = MyformsEmail(request.POST)
if obj.is_valid():
print(time.strftime("%Y-%m-%d %H:%M:%S"),"forms is ok")
isOkData=obj.clean()
email =isOkData["emailss"] # 生成6位的0-9的随机数字,并转换成字符串 生成验证码
random_str = "".join([str(random.randint(0, 9)) for i in range(6)])
yanzheng=login_tmp.objects.filter(email=email,tmpType='')
if yanzheng.count():
timenow=datetime.datetime.now()
print(timenow, "yanzheng is ok")
# login_tmp.object(es.filter(lastTime__gt=F("firstTime")+0.5).update(times=0)
# 获取一个当前时间减去一小时的时间,用于判断提交请求的时间间隔是否合法
thisTime = datetime.datetime.now() + datetime.timedelta(hours=-1)
print("thistime:",thisTime, "datatime",datetime.datetime.now())
if yanzheng.filter(firstTime__lt=thisTime).count():
print("okokokokokokokokok")
try:
# objEmail=sendemail.Send_email()
# objEmail.send_mail(email,random_str)
yanzheng.update(tmp_num=random_str, firstTime=timenow, lastTime=timenow, times='')
rel.supmary="验证码发送成功"
rel.code=''
except Exception as e:
rel.data = "验证码发送失败"
return HttpResponse(json.dumps(rel.__dict__)) if yanzheng.filter(firstTime__gt=thisTime,times__gt=5).count():
rel.error = "1小时内只可以请求5次验证码"
rel.status=False
print(rel.error)
return HttpResponse(json.dumps(rel.__dict__)) else:
print(time.strftime("%Y-%m-%d %H:%M:%S"), "yanzheng.filter is ok")
try:
print(email)
print(random_str)
# objEmail=sendemail.Send_email()
# objEmail.send_mail(email,random_str)
yanzheng.update(times=F("times") + 1, tmp_num=random_str,lastTime=datetime.datetime.now())
rel.data='验证码发送成功'
print(rel.data)
except Exception as e:
rel.data = e
else:
try: login_tmp.objects.create(email=email,tmp_num=random_str,times=1,tmpType=1)
except Exception as e:
rel.data="验证码发送失败"
return HttpResponse(json.dumps(rel.__dict__))
else:
# rel_myform=obj.errors.as_json()
# rel_myform=obj.errors.as_json()
rel_myform=obj.errors['emailss'][0] print(rel_myform)
rel.status=False
# rel.error=rel_myform['emailss'][0]['message']
rel.error=rel_myform print("rel_myform:",rel_myform)
print(rel) return HttpResponse(json.dumps(rel.__dict__))

HTML

            <div class="login-input" style="position: relative; ">
<span class="insert_err hide" id="insert_err" style="font-size: 10px;color: red">报错--</span><br>
<select style="width: 205px;height: 30px;border: 1px solid #CDDDEF;padding: 5px 5px;">
<option>中国(+86)</option>
<option>中国香港(+852)</option>
<option>中国澳门(+853)</option>
<option>中国台湾(+886)</option>
</select><br><br> <input style="width: 115px;height: 20px" type="email" name="emaisl" id="emails" placeholder="邮箱">
<button id="emailBt">获取验证码</button><br><br>
{# <--#}
{# <input style="width: 115px;height: 20px" type="text" name="phonenumber" placeholder="手机号">#}
{# <button id="phoneBt">获取验证码</button>#}
{# <br>#}
{# <span style="font-size: 10px;margin-left: 40px">收不到短信?&nbsp;&nbsp;&nbsp;&nbsp; <a href="javascript:;">获取语音验证码</a></span>-->#}
{# <br><br>#}
<input style="width: 200px;height: 20px" type="text" name="code" placeholder="验证码" id="tmpNum"><br><br>
<input style="width: 200px;height: 20px" type="password" name="password" placeholder="密码" id="passwd"><br><br> <button class="loginNext" id="loginNext"> 下一步</button> </div>

JavaScript OR  jQuery

    function insert() {
$("#emailBt").click(function () {
//alert($("#email").val());
//console.log($("#emails").val()); $.ajax({
url:"/insert/",
data:{emailss:$("#emails").val()},
//dataType:JSON,
type:"POST",
success:function (rel) { console.log(rel);
var rel_data=JSON.parse(rel);
if (rel_data.status){
console.log(rel.error);
console.log(rel_data.error);
$("#emails").attr("disabled","disabled");
$("#insert_err").html('验证码发送成功');
alert("验证码发送成功"); }else{
//var err=JSON.parse(rel_data.error);
var err_msg=rel_data.error;
console.log(err_msg);
$("#insert_err").attr("color","red").removeClass("hide").html(err_msg); } } }) });

django-forms表单验证的更多相关文章

  1. python运维开发(十九)----Django后台表单验证、session、cookie、model操作

    内容目录: Django后台表单验证 CSRF加密传输 session.cookie model数据库操作 Django后台Form表单验证 Django中Form一般有2种功能: 1.用于做用户提交 ...

  2. django form表单验证

    一. django form表单验证引入 有时时候我们需要使用get,post,put等方式在前台HTML页面提交一些数据到后台处理例 ; <!DOCTYPE html> <html ...

  3. django from表单验证

    django from表单验证   实现:表单验证 工程示例: urls.py 1 2 3 4 5 6 7 8 9 from django.conf.urls import url from djan ...

  4. Django(5) session登录注销、csrf及中间件自定义、django Form表单验证(非常好用)

    一.Django中默认支持Session,其内部提供了5种类型的Session供开发者使用: 数据库(默认) 缓存 文件 缓存+数据库 加密cookie 1.数据库Session 1 2 3 4 5 ...

  5. Django实现表单验证、CSRF、cookie和session、缓存、数据库多表操作(双下划綫)

    通常验证用户输入是否合法的话,是前端js和后端共同验证的,这是因为前端js是可以被禁用的,假如被禁用了,那就没法用js实现验证合法与否了,也就是即使用户输入的不合法,但是也没提示,用户也不知道怎么输入 ...

  6. django book表单验证学习

    django提供了强大的表单验证功能form 个人认为是把html代码封装到form里面,就像封装models中的数据一样.而且带有强大的验证功能,不需要后台再去写一堆乱七八糟的验证 具体操作查看dj ...

  7. Django之表单验证

    对于前端的表单进行验证的方法,从最简单的js到基于XML传输的Ajax,再到cookie的免认证,现在Django为我们提供了自带的表单验证方法. views.py: from django impo ...

  8. Django forms表单 select下拉框的传值

    今儿继续做项目,学习了Django的forms生成前端的代码. forms.py class SignupForm(forms.Form): username = forms.CharField(va ...

  9. Django-website 程序案例系列-17 forms表单验证的字段解释

    1.Django内置字段如下: Field required=True, 是否允许为空 widget=None, HTML插件 label=None, 用于生成Label标签或显示内容 initial ...

  10. Django ModelForm表单验证

    ModelForm 在使用Model和Form时,都需要对字段进行定义并指定类型,通过ModelForm则可以省去From中字段的定义 应用场景:定制model admin 的时候可以使用.适用于小业 ...

随机推荐

  1. 12个高效的VS调试技巧

    介绍 调试是软件开发周期中的一个很重要的部分,有时很有挑战性,有时候则让程序员迷惑,有时候让程序员发疯,但是.可以肯定的是,对于任何不是太那个微不足道的程序来说,调试是不可避免的.近年来,调试工具的发 ...

  2. sprint3 【每日scrum】 TD助手站立会议第八天

    站立会议 组员 昨天 今天 困难 签到 刘铸辉 (组长) 调整闹钟和整个项目的显示效果,最后做出了微信界面滑动的显示效果 整合原来做过的功能,并做相应的改进,整合其他的功能 在界面的设计和用户交互上始 ...

  3. Android studio中正确引入so文件的方法

    相信很多朋友在使用Android studio开发中,遇到过如何引入第三方so文件的问题,然而第三方官方仅仅给出了ADT环境下的集成方式. Android studio中默认使用的是gradle编译方 ...

  4. hdu 1159(Common Subsequence)简单dp,求出最大的公共的字符数

    Common Subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  5. RecyclerView加载更多用notifyDataSetChanged()刷新图片闪烁

    首先来看看对比ListView看一下RecyclerView的Adapter主要增加了哪些方法: notifyItemChanged(int position) 更新列表position位置上的数据可 ...

  6. python之开篇---hello world!

    (1)前沿 (2)python 简介 (3)python hello world 实现 (4) -------------qq:1327706646 ------------------------- ...

  7. ubuntu下搭建的lamp环境新建站点

    这几天刚装了一个ubuntu 16.04桌面版,总之来来回回几遍才基本把环境搭建好,本来用apt-get搭建,结果不知道什么原因16.04版不支持装php5 ,提示源放弃了php5版本,不得不使用ph ...

  8. NSIS 变量

    $PROGRAMFILES 程序文件目录(通常为 C:\Program Files 但是运行时会检测). $COMMONFILES 公用文件目录.这是应用程序共享组件的目录(通常为 C:\Progra ...

  9. Http权威指南学习研究

    学习时间:                                   该学习:第六章  6.6小节   加油   185页 2017年5月15日15:13:00 今天任务: 看完前两章节: ...

  10. Java图形界面实战案例——实现打字母游戏

    实现打字母的游戏 这次这个案例能够说是头几次所讲的内容的一个技术汇总,主要是 运用了几大块的知识.我们先来定义一下案例的背景:在一个300*400的窗口上.有10个随机产生的字母下落,在键盘上敲击字母 ...