(一)设置验证码 在views.py文件里定义验证码
#字体颜色随机
def rndChar():
return chr(random.randint(65, 90))
# 随机颜色1:
def rndColor():
return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))
# 随机颜色2:
def rndColor2():
return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))
def identifying(request): -------------定义验证码
width = 60 * 4 ---------定义宽
height = 60 ---------定义高
image = Image.new('RGB', (width, height), (255, 255, 255)) ------定义一个新的图片
# 创建Font对象:
font = ImageFont.truetype('LiberationSans-BoldItalic.ttf', 36) -----定义字体
# 创建Draw对象:
draw = ImageDraw.Draw(image) -------------------定义像素
# 填充每个像素:
for x in range(width):
for y in range(height):
draw.point((x, y), fill=rndColor())
# 输出文字:
codes = ' '
for t in range(4):
code=rndChar()
codes += code
draw.text((60 * t + 10, 10), code, font=font, fill=rndColor2())
# 模糊:
image = image.filter(ImageFilter.BLUR)
#将验证码字符串存储到session中 ---------为了判断用户验证码输入的是否正确
request.session['codes'] = codes
request.session.set_expiry(0)
f=BytesIO() --------------图片用字节来存储
image.save(f,'jpeg') ------------提交图片
return HttpResponse(f.getvalue(),'image/jpeg') ----------获取图片,并定义图片的格式
(二)在登录的方法里验证
#判断验证码
userverification=request.POST.get('identifying')
codes=request.session['codes']
print(codes)
if userverification == None or codes.upper() != userverification.upper(): -----如果验证码为空或者不符合图片
context = {'userverification_error': '验证码输入错误'}
return render(request, 'user/login.html', context)
url='/user/identifying'
function checkimg(abc) {
abc.src=url+'?num='+new Date()
}
(三)处理静态文件
项目中的CSS、图片、js都是静态文件
配置静态文件
(第一步)
在settings 文件中定义静态内容
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
在项目根目录下创建static目录,再创建当前应用名称的目录
/static/myapp/
在模板中可以使用硬编码
/static/my_app/myexample.jpg
在模板中可以使用static编码
{ % load static from staticfiles %}