django项目中的验证码模块
1、安装验证码模块:
pip install django-simple-captcha==0.4.6
2、验证码模块注册到django setting.py中的 INSTALLED_APPS:
# 注册app的配置 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'users', 'courses', 'operation', 'organzation', 'crispy_forms', 'xadmin', # 验证码模块 'captcha', ]
3、同步数据库,把验证码相关的表迁移到本地数据库:
python manage.py makemigrations
python manage.py migrate
4、添加验证码的url到django路由系统:
url(r'^captcha/', include('captcha.urls'))
5、使用captcha自带的field生成input标签,使用django的模板语言,部署到前端页面:
from captcha.fields import CaptchaField
# 注册表单验证 class RegisterForm(forms.Form): email = forms.EmailField(error_messages={'required': '邮箱为必填项'}, required=True) password = forms.CharField(error_messages={'required': '密码为必填项', 'min': '密码限制为6-18位', 'max': '密码限制为6-18位'}, required=True, max_length=18, min_length=6) # 验证码自带的Field captcha = CaptchaField(error_messages={'invalid': u'验证码输入错误'})
6、验证码验证逻辑:
每次生成一个验证码,数据库就会保存相应的字母,并生成一段hashkey,hashkey会在一个隐藏的input标签中,随着用户提交表单,一起发送到后端验证,后端会根据验证码和这段hashkey进行组合验证。