博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
登陆验证码
阅读量:5024 次
发布时间:2019-06-12

本文共 3770 字,大约阅读时间需要 12 分钟。

带验证码的登陆页面:

login页面:

    
Title
{% csrf_token %}
html

views页面:

from django.shortcuts import render,HttpResponse,redirectfrom django import forms# Create your views here.from blog.forms import  *from blogCMS import settingsfrom django.contrib import authdef login(request):#登陆页面    # if request.is_ajax():    if request.is_ajax():        username=request.POST.get("username")        password=request.POST.get("password")        validCode=request.POST.get("validCode")        login_response={
"is_login":False,"error_msg":None} if validCode.upper()==request.session.get("keepValidCode").upper(): user=auth.authenticate(username=username,password=password) if user: login_response["is_login"]=True auth.login(request,user) # session request.session[is_login]=True else: login_response["error_msg"] = "username or password error" else: login_response["error_msg"]='validCode error' import json return HttpResponse(json.dumps(login_response)) return render(request,"login.html")def get_validCode_img(request):#生成验证码的 # 方式1: # import os # path= os.path.join(settings.BASE_DIR,"blog","static","img","egon.jpg") # # with open(path,"rb") as f: # data=f.read() # 方式2: # from PIL import Image # # img=Image.new(mode="RGB",size=(120,40),color="green") # # f=open("validCode.png","wb") # img.save(f,"png") # # with open("validCode.png","rb") as f: # data=f.read() # 方式3: # from io import BytesIO # # from PIL import Image # img = Image.new(mode="RGB", size=(120, 40), color="blue") # f=BytesIO() # img.save(f,"png") # data=f.getvalue() # return HttpResponse(data) # 方式4 : from io import BytesIO import random from PIL import Image,ImageDraw,ImageFont img = Image.new(mode="RGB", size=(120, 40), color=(random.randint(0,255),random.randint(0,255),random.randint(0,255))) draw=ImageDraw.Draw(img,"RGB") font=ImageFont.truetype("blog/static/font/kumo.ttf",25) valid_list=[] for i in range(5): random_num=str(random.randint(0,9)) random_lower_zimu=chr(random.randint(65,90)) random_upper_zimu=chr(random.randint(97,122)) random_char=random.choice([random_num,random_lower_zimu,random_upper_zimu]) draw.text([5+i*24,10],random_char,(random.randint(0,255),random.randint(0,255),random.randint(0,255)),font=font) valid_list.append(random_char) f=BytesIO() img.save(f,"png") data=f.getvalue() valid_str="".join(valid_list) print(valid_str) request.session["keepValidCode"]=valid_str return HttpResponse(data) return HttpResponse(data)def index(request):#登陆页面 if not request.user.is_authenticated(): return redirect("/login/") return render(request,"index.html")def log_out(request):#注销登陆 auth.logout(request) return redirect("/login/")def article(request): return render(request,"article.html")
View Code

 

 

 

 

注:可以在页面上用找出是谁登陆的

{
{ request.user.username }}

这个是在模板渲染里用

转载于:https://www.cnblogs.com/1a2a/p/7868337.html

你可能感兴趣的文章
JAVA基础知识 String s = new String("ABC") VS String s = "abc"
查看>>
mysql 数据库,表存储 大小
查看>>
将博客搬至CSDN
查看>>
Spring AOP编程
查看>>
2017.2.18[codevs3311][bzoj3668]NOI2014D1T1起床困难综合症
查看>>
MySQL表的四种分区类型
查看>>
最全的分区类型及详解
查看>>
Python 类中__init__()方法中的形参与如何修改类中属性的值
查看>>
9.1.3 前端 - HTML body标签 - 文本样式
查看>>
ACID属性
查看>>
cnpm不是内部命令的解决方案:配置环境变量
查看>>
7系列FPGA远程更新方案-QuickBoot(转)
查看>>
导出帐号和权限脚本
查看>>
markdown公式编辑参考
查看>>
利用运行时给模型赋值
查看>>
归并排序求逆序对
查看>>
SQL2008用sql语句给字段添加说明
查看>>
JavaScript的对象创建
查看>>
树形DP(统计直径的条数 HDU3534)
查看>>
java-jdbc循环设置sql参数
查看>>