第三百八十三节,Django+Xadmin打造上线标准的在线教育平台—第三方模块django-simple-captcha验证码
第三百八十三节,Django+Xadmin打造上线标准的在线教育平台—第三方模块django-simple-captcha验证码
下载地址:https://github.com/mbi/django-simple-captcha
文档说明:http://django-simple-captcha.readthedocs.io/en/latest/usage.html
安装模块
下载后python setup.py install安装模块
在配置文件settings.py,里注册app名称captcha,因为这个验证码插件,自动生成自己的一张数据库表
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app_users', # 注册 APP
'app_courses',
'app_organization',
'app_operation',
'xadmin', # 注册xadmin的app
'crispy_forms', # 注册xadmin的依赖app
'captcha', # 注册验证码app
]
配置图面验证码url路由映射
from django.conf.urls import url, include # 导入django自在的include逻辑
from django.contrib import admin
from django.views.generic import TemplateView # 导入django自带的TemplateView逻辑 import xadmin # 导入xadmin from app_users.views import deng_lu, zhu_ce, yanzhmaHandler # 导入登录逻辑处理类 urlpatterns = [
url(r'^xadmin/', xadmin.site.urls), url(r'^index.html', TemplateView.as_view(template_name='index.html'), name='index'), url(r'^register.html', TemplateView.as_view(template_name='register.html'), name='register'),
url(r'^zhu_ce', zhu_ce.as_view(), name='zhu_ce'),
url(r'^yanzhm', yanzhmaHandler.as_view(), name='yanzhm'),
url(r'^captcha/', include('captcha.urls'), name='captcha'), url(r'^login.html', TemplateView.as_view(template_name='login.html'), name='login'),
url(r'^deng_lu', deng_lu.as_view(), name='deng_lu'), ]
生成验证码数据表
执行migrate命令生成验证码数据表

编写当前app下的forms.py表单验证
#!/usr/bin/env python
# -*- coding:utf8 -*-
# 表单验证 from django import forms # 导入Django的表单验证模块
from captcha.fields import CaptchaField class zhu_ce_forms(forms.Form):
email = forms.EmailField(
required=True,
max_length=40,
min_length=2,
error_messages={
'required': '邮箱名不能为空',
'max_length': '邮箱名长度不得超过40个字符',
'min_length': '邮箱名长度不得少于2个字符',
}
)
password = forms.CharField(
required=True,
max_length=20,
min_length=2,
error_messages={
'required': '密码不能为空',
'max_length': '密码长度不得超过20个字符',
'min_length': '密码长度不得少于2个字符',
}
)
captcha = CaptchaField( # captcha名称是固定的
required=True,
error_messages={
'required': '验证码不能为空',
'invalid': '验证码不正确'
}
)
验证码使用
在需要使用验证码表单的逻辑处理函数里使用
1在get请求时实例化表单验证类,将实例化的类传输到html页面
2在HTML页面接收表单类下面的captcha,会自动生成验证码包括输入框,数据库里也会生成验证码,这样包括验证等都会自动完成
逻辑处理
#!/usr/bin/env python
# -*- coding:utf8 -*-
import io # 导入io模块 from django.shortcuts import render, HttpResponse # 导入django向浏览器返回方法
from django.views.generic.base import View
from django.db.models import F,Q # 导入F和Q
from django.contrib.auth.hashers import make_password, check_password # 导入django密码加密,和密码验证
from django.contrib.auth.models import User from app_users.forms import deng_lu_forms, zhu_ce_forms # 导入登录页面表单认证
from app_users.models import Users # 导入数据库操作 class zhu_ce(View):
def get(self, request):
yanzhm = zhu_ce_forms()
return render(request, 'register.html', {'yanzhm': yanzhm}) def post(self, request):
f = zhu_ce_forms(request.POST)
if f.is_valid(): # 判断认证是否成功
tong_guo = f.cleaned_data # 认证成功,接收用户数据
email = tong_guo['email']
password = tong_guo['password']
html
<div class="form-group marb8 captcha1 {% if cuo_wu.captcha %}errorput{% endif %}">
<label>验 证 码</label>
{{ yanzhm.captcha }}
</div>
验证码的各种设置在settings.py里配置
# Application definition INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app_users', # 注册 APP
'app_courses',
'app_organization',
'app_operation',
'xadmin', # 注册xadmin的app
'crispy_forms', # 注册xadmin的依赖app
'captcha', # 注册验证码app
]
# 格式
CAPTCHA_OUTPUT_FORMAT = u'%(text_field)s %(hidden_field)s %(image)s'
# 噪点样式
CAPTCHA_NOISE_FUNCTIONS = (
'captcha.helpers.noise_null', # 没有样式
# 'captcha.helpers.noise_arcs', # 线
'captcha.helpers.noise_dots', # 点
)
# 图片大小
CAPTCHA_IMAGE_SIZE = (100, 30)
# 字符个数
CAPTCHA_LENGTH = 4
# 超时(minutes)
CAPTCHA_TIMEOUT = 1
# 文字倾斜
CAPTCHA_LETTER_ROTATION = (-10,10)
# 背景颜色
CAPTCHA_BACKGROUND_COLOR = '#FFFFFF'
# 文字颜色
CAPTCHA_FOREGROUND_COLOR = '#0A12E5'
# 验证码类型
# 图片中的文字为随机英文字母,如 mdsh
CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.random_char_challenge'
# 图片中的文字为数字表达式,如1+2=
# CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.math_challenge'
第三百八十三节,Django+Xadmin打造上线标准的在线教育平台—第三方模块django-simple-captcha验证码的更多相关文章
- 第三百八十九节,Django+Xadmin打造上线标准的在线教育平台—列表筛选结合分页
第三百八十九节,Django+Xadmin打造上线标准的在线教育平台—列表筛选结合分页 根据用户的筛选条件来结合分页 实现原理就是,当用户点击一个筛选条件时,通过get请求方式传参将筛选的id或者值, ...
- 第三百八十八节,Django+Xadmin打造上线标准的在线教育平台—网站列表分页
第三百八十八节,Django+Xadmin打造上线标准的在线教育平台—网站列表分页 分页可以用一个第三方分页模块django-pure-pagination 下载地址:https://github.c ...
- 第三百八十六节,Django+Xadmin打造上线标准的在线教育平台—HTML母版继承
第三百八十六节,Django+Xadmin打造上线标准的在线教育平台—HTML母版继承 母板-子板-母板继承 母板继承就是访问的页面继承一个母板,将访问页面的内容引入到母板里指定的地方,组合成一个新页 ...
- 第三百八十五节,Django+Xadmin打造上线标准的在线教育平台—登录功能实现,回填数据以及错误提示html
第三百八十五节,Django+Xadmin打造上线标准的在线教育平台—登录功能实现 1,配置登录路由 from django.conf.urls import url, include # 导入dja ...
- 第三百八十四节,Django+Xadmin打造上线标准的在线教育平台—路由映射与静态文件配置以及会员注册
第三百八十四节,Django+Xadmin打造上线标准的在线教育平台—路由映射与静态文件配置以及会员注册 基于类的路由映射 from django.conf.urls import url, incl ...
- 第三百八十节,Django+Xadmin打造上线标准的在线教育平台—将所有app下的models数据库表注册到xadmin后台管理
第三百八十节,Django+Xadmin打造上线标准的在线教育平台—将所有app下的models数据库表注册到xadmin后台管理 将一个app下的models数据库表注册到xadmin后台管理 重点 ...
- 第三百七十三节,Django+Xadmin打造上线标准的在线教育平台—创建用户app,在models.py文件生成3张表,用户表、验证码表、轮播图表
第三百七十三节,Django+Xadmin打造上线标准的在线教育平台—创建用户app,在models.py文件生成3张表,用户表.验证码表.轮播图表 创建Django项目 项目 settings.py ...
- 第三百九十三节,Django+Xadmin打造上线标准的在线教育平台—Xadmin后台进阶开发配置
第三百九十三节,Django+Xadmin打造上线标准的在线教育平台—Xadmin后台进阶开发配置 设置后台某个字段的排序规则 在当前APP里的adminx.py文件里的数据表管理器里设置 order ...
- 第三百八十七节,Django+Xadmin打造上线标准的在线教育平台—网站上传资源的配置与显示
第三百八十七节,Django+Xadmin打造上线标准的在线教育平台—网站上传资源的配置与显示 首先了解一下static静态文件与上传资源的区别,static静态文件里面一般防止的我们网站样式的文件, ...
随机推荐
- (原创)用c++11打造好用的variant(更新)
关于variant的实现参考我前面的博文,不过这第一个版本还不够完善,主要有这几个问题: 内部的缓冲区是原始的char[],没有考虑内存对齐: 没有visit功能. 没有考虑赋值构造函数的问题,存在隐 ...
- Ubantu 使用extundelete恢复数据
所以在维护系统的时候,要慎之又慎,但是有时难免会出现数据被误删除的情况,在这个时候改如何快速.有效地恢复数据呢?本文我们就来介绍一下Linux系统下常用的几个数据恢复工具. 一.如何使用“rm -rf ...
- 如何评测一个P2P平台是否可靠
1.标准 1)平台是否实现银行存管 2)平台是否有ICP许可证 ICP许可证:也称互联网信息服务业务经营许可证,或者增值电信业务许可证中的互联网信息服务业务. 3)平台背景 经营主体背景(央企,国企, ...
- 每日英语:How the College Bubble Will Pop
The American political class has long held that higher education is vital to individual and national ...
- [转载]Lua和C++交互详细总结
原文请看:Lua和C++交互详细总结 转自:http://cn.cocos2d-x.org/tutorial/show?id=1474 一.Lua堆栈 要理解Lua和C++交互,首先要理解Lua堆栈. ...
- 【内核】内核链表使用说明,list.h注释
list_entry定义 /** * list_entry - get the struct for this entry * @ptr: the &struct list_head poin ...
- 【Cmd】那些年,我们迷恋的cmd命令(一)
小续 还记得,那些年玩hack的朋友吗,现在玩这个的,基本都是小孩子了(俗称脚本小子). 还记得,那些年敲过的命令吗,现在的孩子,都用工具了(叫工具党). 孩子们,健康的网络环境需要大家一起去维护. ...
- ElasticSearch5.3安装head插件及连接ElasticSearch
1. 安装插件head # 去github上下载head git clone git://github.com/mobz/elasticsearch-head.git # 由于head基于nodejs ...
- 【PHP爬虫】curl+simple_html_dom 抓取百度最新消息新闻标题,来源,URL
<title>新闻转载统计</title> <script> function submit(){ wd=document.getElementById('name ...
- hdu1217(spfa,存在环,但需要将环的元素历遍一次.....求乘积的最大)
题意:有n个国家货币,给出m种两个国家之间的货币兑换率,求是否可以盈利....... 思路:其实就是看国家货币兑换间是否存在一个环,使得从v点出发时,dis[v]=1,经过环回到v点时,dis[v]& ...