第三百八十三节,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静态文件里面一般防止的我们网站样式的文件, ...
随机推荐
- morgan日志分割
var FileStreamRotator = require('file-stream-rotator') var express = require('express') var fs = req ...
- (原创)c++11改进我们的模式之改进观察者模式
和单例模式面临的是同样的问题,主题更新的接口难以统一,很难做出一个通用的观察者模式,还是用到可变模板参数解决这个问题,其次还用到了右值引用,避免多余的内存移动.c++11版本的观察者模式支持注册的观察 ...
- 每日英语:Missing at Mobile World Congress: Innovation
The hottest showcase for new technology at this year's Mobile World Congress wasn't in the event's c ...
- 网页安装ipa
在网页上直接下载并安装ipa,兼容所欲iso,包含没有越狱的 1.html代码 <a href="itms-services://?action=download-manifest&a ...
- eclipse Maven 使用记录 ------ 建立app项目
maven 项目构建工具 , 如今已逐渐取代ant的笨拙配置方式 ,使项目管理更加简单,规范,结构更加清晰,这里记录跟eclipse集成的一些步骤 1.从apache maven项目下下载maven ...
- 6. EM算法-高斯混合模型GMM+Lasso详细代码实现
1. 前言 我们之前有介绍过4. EM算法-高斯混合模型GMM详细代码实现,在那片博文里面把GMM说涉及到的过程,可能会遇到的问题,基本讲了.今天我们升级下,主要一起解析下EM算法中GMM(搞事混合模 ...
- 迭代器模式和组合模式(head first设计模式——8)
把迭代器模式和组合模式放在同一篇的原因是其联系比较紧密. 一.迭代器模式 1.1迭代器模式定义 迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示. 这个模式提供了一种方法 ...
- Java局部打印的问题
项目中遇到了做局部打印的情况,最开始用的bootstrap,可是实际显示的和打印的效果就不一样了,于是就只能换一种方式了. 打印是用的jqprint 这个插件,很简单好用的插件. 引入两个js就可以了 ...
- bootstarp-table 设置隐藏列
在做隐藏列的时候会发现一个问题. var settings = { url: ctx + "rollapply/list", pageSize: 10, queryParams: ...
- #pragma alloc_text
#pragma alloc_text 编译时控制分页能力 有时,驱动程序的某些部分必须驻留内存而另一些可以被分页,这就需要一种能控制代码和数据是否分页的方法.通过指导编译器的段分配可以实现这个目的.在 ...