>[success] # 讲解 >[danger] ##### 验证码 ~~~ from until.check_code import create_validate_code from io import BytesIO def check_code(request): stream = BytesIO() img,code = create_validate_code() img.save(stream,"PNG") request.session['CheckCode'] = code return HttpResponse(stream.getvalue()) ~~~ >[danger] ##### form 验证常用的思路 ~~~ 1.创建 自定的form类 2.传入要使用的参数,注意form创建的验证字段和html name相对应的 3..is_valid() 方法验证是否符合 4.从cleaned_data 拿数据 ~~~ >[success] # 代码 ~~~ from django.shortcuts import render from django.shortcuts import HttpResponse import json from cm.cmform.regiser import RegisterForm from until.check_code import create_validate_code from . import models from io import BytesIO # Create your views here. def check_code(request): stream = BytesIO() img,code = create_validate_code() img.save(stream,"PNG") request.session['CheckCode'] = code return HttpResponse(stream.getvalue()) def register(request): if request.method == "GET": rgister_form = RegisterForm(request) return render(request,"register.html",{"rgisterfrom":rgister_form}) if request.method == "POST": ret = {"status":True,"message":None} rgister_form = RegisterForm(request,request.POST) if rgister_form.is_valid(): UserData = rgister_form.cleaned_data print(UserData) models.UserInfo.objects.create( username=UserData['username'], password=UserData['password'], nickname=UserData['nickname'], email=UserData['email'], ) else: ret["status"] = False ret['message'] = rgister_form.errors return HttpResponse(json.dumps(ret)) ~~~