欢迎来到我的网站
Python-Web 14验证码
Python-Web 14验证码

Python-Web 14验证码

任务1:验证码

0、安装

python3 manage.py migrate

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple Pillow==8.3.2

1、配置settings.py

FONTS_DIRS=os.path.join(BASE_DIR,’static/fonts’) # 字体文件夹位置

2、编写视图处理函数

#验证码

from PIL import Image,ImageDraw,ImageFont

from django.conf import settings

import io,os

import random

def varityCode(request):

#RGB(255,255,255)

bgcolor=(random.randrange(10,170),random.randrange(50,150),255)

width=140

height=60

img=Image.new(mode=’RGB’,size=(width,height),color=bgcolor) #创建一个图片

draw=ImageDraw.Draw(img,mode=’RGB’) #将新建的图片传给一个绘制对象

textList=”1234567890qwertyupasdfghjkzxcvbnmASDFGHJKLPUYTREWQZXCVBNM234567890″

fonts_dir=os.path.join(settings.FONTS_DIRS,’arial.ttf’)

fonts=ImageFont.truetype(fonts_dir,40)

vCode=”

for i in range(4):

t_vcode=textList[random.randrange(0,len(textList))]

vCode=vCode+t_vcode

vcode_color=(random.randint(0,255),random.randint(0,255),random.randint(0,255))

draw.text((i*20+8,6),t_vcode,vcode_color,fonts)

buf=io.BytesIO()

img.save(buf,’png’)

request.session[‘varityCode’]=vCode

return HttpResponse(buf.getvalue(),’image/png’)

3、写路由

path(‘vcode/’,views.varityCode),

4、测试

任务2:第三方验证码

0、安装第三方验证码

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django-simple-captcha==0.5.12

1、配置—-》settings.py

INSTALLED_APPS = [

‘django.contrib.admin’,

‘django.contrib.auth’,

‘django.contrib.contenttypes’,

‘django.contrib.sessions’,

‘django.contrib.messages’,

‘django.contrib.staticfiles’,

‘index’,

‘captcha’,

]

CAPTCHA_IMAGE_SIZE=(80,40)

CAPTCHA_LENGTH=4

CAPTCHA_TIMEOUT=1

2、添加全局的路由—-》yun223100—->urls.py

path(“captcha/”,include(‘captcha.urls’)),

3、数据迁移

python3 manage.py migrate

4、编写表单类—-》index—>新建forms.py文件

from django import forms

from captcha.fields import CaptchaField

class LoginForm(forms.Form):

username=forms.CharField(max_length=20,label=”用户名”)

password=forms.CharField(max_length=20,label=”密码”,widget=forms.PasswordInput)

varityCode=CaptchaField(label=’验证码’)

5、编视图处理函数index—>views.py

from index.forms import LoginForm

from captcha.models import CaptchaStore

from django.contrib.auth import login,logout,authenticate

from django.contrib.auth.models import User

def login2Form(request):

if request.method==’GET’:

loginFrom=LoginForm()

else:

login_from = LoginForm(request.POST)

username = request.POST.get(‘username’)

password = request.POST.get(‘password’)

varityCode_0 = request.POST.get(‘varityCode_0’) #存储这个图片Hash Key

varityCode_1 = request.POST.get(‘varityCode_1’)

get_captcha = CaptchaStore.objects.get(hashkey=varityCode_0)

if str(get_captcha).lower() == varityCode_1.lower():

#验证码比对通过,然后调用第三方权限管理组件

user = authenticate(username=username, password=password)

if user:

#用户存在,实施登录操作

login(request, user)

return HttpResponse(“用户登录成功!后台管理”)

return HttpResponse(“登录失败,验证码成功!”)

return render(request,”loginForm.html”,locals())

6、创建登录页面模板—-》loginForm.html

<!DOCTYPE html>

<html lang=”en”>

<head>

<meta charset=”UTF-8″>

<title>Login….</title>

</head>

<body>

<h2>用户登录</h2>

<hr/>

<form method=”post” action=”#”>

{% csrf_token %}

<table>

{{loginFrom.as_table}}

</table>

<br/>

<input type=”submit” value=”登录”>

</form>

</body>

</html>

7、写路由—》index_urls.py

path(‘login2/’,views.login2Form),

8、测试—-》

任务3 创建admin后台管理账户

python3 manage.py createsuperuser

验证后台登录操作

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注