Django验证码插件如何为疑问?
摘要:使用django-simple-captcha实现登录验证码: 第一步:安装pillow依赖 pip install pillow -i https:pypi.tuna.tsinghua.edu.cnsimple 第二步:安装dja
使用django-simple-captcha实现登录验证码:
第一步:安装pillow依赖
pip install pillow-i https://pypi.tuna.tsinghua.edu.cn/simple/
第二步:安装django-simple-captcha
pip install django-simple-captcha -i https://pypi.tuna.tsinghua.edu.cn/simple/
第三步:注册django-simple-captcha
INSTALLED_APPS = [
'captcha',
]
第四步:配置urls.py
urlpatterns = [
# 图片验证码 路由
path('captcha/', include('captcha.urls')),
]
第五步:数据库迁移
python manage.py makemigrations
python manage.py migrate
第六步:在settings.py中配置验证码的相关信息
#字母验证码
CAPTCHA_IMAGE_SIZE = (80, 45) # 设置 captcha 图片大小
CAPTCHA_LENGTH = 4 # 字符个数
CAPTCHA_TIMEOUT = 1 # 超时(minutes)
第七步:创建form表单
from django import forms
from captcha.fields import CaptchaField
# 创建form表单
class LoginForm(forms.Form):
'''
生成的captcha,包括三部分的内容:
1. 验证码的图片
2. 验证码的输入框
3. 验证码的答案【默认是隐藏的】
'''
captcha = CaptchaField()
第八步:定义视图函数views.py
# 处理验证码请求的视图函数 test
def test(request):
# 如果是GET方法,则将form对象传递到页面中
# 传递的内容就是上面刚刚所说的三个部分的内容
if request.method == 'GET':
my_form = LoginForm()
return render(request, 'template.html', locals())
# 前端将验证码以POST方法提交过来后,进行校验
my_form = LoginForm(request.POST)
# 如果输入的验证码正确,则返回“通过”,反之,返回“不通过”
if my_form.is_valid():
return HttpResponse('通过')
else:
return HttpResponse('不通过')
第九步:模板HTML页面
<form action="" method="post">
<!-- my_form.captcha中包含了前面说的三个内容 -->
{{ my_form.captcha }}
<!-- 按钮需要自己添加 -->
<input type="submit">
</form>
渲染后的html页面如下:
--- 注:
(1)img为:验证码图片
(2)第二个input为:验证码输入框
(3)第一个input为:验证码答案【隐藏】
到此为止,就实现了基本的验证码功能,
但是,如果想要刷新验证码,就必须刷新整个页面,
所以,需要使用Ajax来进行验证码的刷新,
那如何操作呢?
其实,只需要给图片添加一个点击事件,当点击图片时,向后端发起一个请求,让后端的某一个函数来处理请求,然后返回新的验证码图片地址和验证码答案即可,
最后再把前端的图片地址src替换为新的地址,和答案的value替换为新的value就可以了。
