python 3 pillow 에서 간단 한 인증 코드 그림 을 만 드 는 예제

Python 의 pillow 모듈 random 모듈 을 사용 하여 인증 코드 그림 을 무 작위 로 생 성하 여 Django 프로젝트 에 적용 합 니 다.
설치 베개

$ pip3 install pillow
인증번호 그림 생 성

\vericode.py

from PIL import Image,ImageDraw,ImageFont,ImageFilter
import random

 #        =1
def random_code(lenght=1):  
  code = ''
  for char in range(lenght):
    code += chr(random.randint(65,90))
  return code

 #           【1,255】
def random_color(s=1,e=255):
  return (random.randint(s,e),random.randint(s,e),random.randint(s,e))

 #       
 #length      
 #width     
 #height     
 #        
def veri_code(lenght=4,width=160,height=40):
  #  Image  
  image = Image.new('RGB',(width,height),(255,255,255))
  #  Font  
  font = ImageFont.truetype('Arial.ttf',32)
  #  Draw  
  draw = ImageDraw.Draw(image)
  #          
  for x in range(width):
    for y in range(height):
      draw.point((x,y),fill=random_color(64,255))
  #   
  code = random_code(lenght)
  #            
  for t in range(lenght):
    draw.text((40*t+5,5),code[t],font=font,fill=random_color(32,127))
  #    
  image = image.filter(ImageFilter.BLUR)
  return code,image

활용 단어 참조
Django 에서 사용 할 보기 함수 작성

\views.py

from . import vericode.py
from io import BytesIO
from django.http import HttpResponse

def verify_code(request):
  f = BytesIO()
  code,image = vericode.veri_code()
  image.save(f,'jpeg')
  request.session['vericode'] = code
  return HttpResponse(f.getvalue())

def submit_xxx(request):
  if request.method == "POST":
    vericode = request.session.get("vericode").upper()
    submitcode = request.POST.get("vericode").upper()
    if submitcode == vericode:
      return HttpResponse('ok')
  return HttpResponse('error')

Django 의 session 을 사 용 했 습 니 다.Django settings.py 의 INSTALLED 가 필요 합 니 다.APPS 에'django.contrib.sessions'추가(기본 추가)
verify_code 보기 함 수 는 인증 코드 를 session 에 추가 하고 인증 코드 그림 과 함께 브 라 우 저 에 보 냅 니 다.폼 을 submit 에 제출 할 때xxx()시 세 션 에서 인증 코드 를 가 져 온 다음 폼 에서 입력 한 인증 코드 를 비교 합 니 다.
url 설정 과 전단 코드 가 제시 되 지 않 았 음 을 간단하게 설명 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기