django图片验证码

需要check_code.py (外部)
需要Pillow模块
需要Monaco.ttf字体文件 (外部)

在app01中新建account.py


account.py

# -*- coding:utf-8 -*-
from django.shortcuts import HttpResponse
from app01 import check_code
from io import BytesIO

def check_code111(request):
    img, code = check_code.create_validate_code()  #执行check_code文件内的create_validate_code()方法
    stream = BytesIO() #建立一个内存区域
    img.save(stream, 'PNG')  #以PNG格式存入内存
    request.session['Check_code'] = code  #验证码存入session
    return HttpResponse(stream.getvalue())  #把生成的图片返回给img

urls.py
*** img 的src 映射过来的的是一个网页***

from django.conf.urls import url
from django.contrib import admin
from app01 import views
from app01 import account

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', views.login, name='login'),
    url(r'^index/$', views.index, name='index'),
    url(r'^check_code.html$', account.check_code111),
]

views.py

from django.shortcuts import render, redirect

# Create your views here.

def login(request):
    if request.method == 'POST':
        u = request.POST.get('username')
        p = request.POST.get('password')
        c = request.POST.get('code')
        if c.upper() == request.session.get('Check_code').upper(): #比较输入的验证码与生成图片时存入的验证码是否一致
            res = redirect('/index/')
            res.set_cookie('user', u)
            res.set_cookie('pass', p)
            return res
        else:
            return render(request, 'login.html')
    else:
        return render(request, 'login.html')

def index(request):
    u = request.COOKIES.get('user')
    p = request.COOKIES.get('pass')
    return render(request, 'index.html', {'u':u, 'p':p})

template---login.html




    
    


{% csrf_token %}

username:

password

  ![](check_code.html)

template---index.html




    
    


OK

user:{{ u }} pass:{{ p }}

你可能感兴趣的:(django图片验证码)