一、验证码
准备工作分别需要两个文集一个是check_code.py文件,一个是Monaco.ttf字体文件
验证码的思路,利用html的src属性直接可以读取对应的连接展示在页面上,所以单独把验证码写成一个连接请求用来返回
-
引入BytesIO 将验证码图片保存在内存环境,这样就不需要实体化的目录文件
-
request.session['CheckCode'] = code 将验证码对应的键值对保存在session中
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())
二、注册的逻辑
-
页面请求首先是get方法,我们把我们的写好的form返回到页面
-
psot请求的时候采用ajax时,要提前写好封装的字典用来保存
-
is_valid() 是用来判断字段是否通过了form的过滤
-
cleaned_data 是用来接受判断通过的字典
-
如果没有通过第三步
- 那么所有的错误信息都封装在
obj_regiser = account.accountform(request,request.POST)
def register(request):
if request.method == "GET":
obj_regiser = account.accountform(request)
return render(request,'register.html',{'obj_register':obj_regiser})
elif request.method == "POST":
ret = {'status':True,'message':None}
obj_regiser = account.accountform(request,request.POST,request.FILES)
if obj_regiser.is_valid():
UserDate = obj_regiser.cleaned_data
models.UserInfo.objects.create(
username = UserDate['username'],
password = UserDate['password'],
nickname = UserDate['nickname'],
email = UserDate['email'],
)
else:
ret['status'] = False
ret['message'] = obj_regiser.errors
return HttpResponse(json.dumps(ret))











网友评论