任务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
验证后台登录操作