注册验证码。
核心思路,替换注册页面的img标签的src属性。

1、准备好文件夹:captcha
2、导包
from utils.captcha.captcha import captcha
3、验证码生成方式
# name, text, StringIO.value
# text : 验证码图片对应到到文本
# image_url : 验证码图片IO流。理解为:二进制数据,并没有实际转换成图片呢
name, text, image_url = captcha.generate_captcha()
session['img_code'] = text
response = make_response(image_url) # 生成图片到响应
# 告诉浏览器,我要返回到是一张图片
response.headers['Content-Type'] = 'image/jpg'
4、js逻辑
(1)生成唯一标识
function generateUUID() {
var d = new Date().getTime();
if(window.performance && typeof window.performance.now === "function"){
d += performance.now(); //use high-precision timer if available
}
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = (d + Math.random()*16)%16 | 0;
d = Math.floor(d/16);
return (c=='x' ? r : (r&0x3|0x8)).toString(16);
});
return uuid;
}
(2)替换注册页面的验证码图片
var imageCodeId = ""
var preimageCodeId = ""
// TODO 生成一个图片验证码的编号,并设置页面中图片验证码img标签的src属性
function generateImageCode() {

//生成一个随机字符串uuid
imageCodeId = generateUUID()

//拼接请求路径,和一个字符串没有什么两样
image_url = "/user/get_image?cur_id="+imageCodeId + "&pre_id="+preimageCodeId

//将image_Url设置到img标签中src, IMG标签只要设置了里面的src属性,会自动去请求跟上的地址
$(".get_pic_code").attr("src",image_url)

// 记录上一次的uuid
preimageCodeId = imageCodeId
}

分页

1、引入分页插件样式
<link rel="stylesheet" href="../../static/admin/css/jquery.pagination.css">
2、引入jquery分页插件, 引入jquery.js 要放在 引入 jquery.pagination
<script type="text/javascript" src="../../static/news/js/jquery-1.12.4.min.js"></script>

<script type="text/javascript" src="../../static/admin/js/jquery.pagination.min.js"></script>

3、应用分页插件
<div class="box">
<div id="pagination" class="page"></div>
</div>

<script>
$(function() {
$("#pagination").pagination({
// data.current_pag 当前页
currentPage: {{data.current_page}},
// data.total_page 总页数
totalPage: {{data.total_page}},
// 点击页码所执行的函数
callback: function(current) {
var keyword = $(".input_txt").val()
window.location.href="http://127.0.0.1:5000/admin/newsreview?page="+current
}
});
});
</script>

4、后台逻辑
# 分页查询方式 使用paginate ,参数1:想要的页码 参数2:每页显示的条数
news_list = News.query.filter(News.title.like('%' + keyword + '%')).paginate(page, 2, False)

5、组织数据
# 数据
d = {}
d['newslist'] = news_list.items # 经过筛选的新闻列表
d['current_page'] = news_list.page # 当前页
d['total_page'] = news_list.pages # 总页数

flask中注册验证码和分页的更多相关文章

  1. Flask中数据库关联与分页与cache缓存(十二)

    1 一对多(One To Many) 表示一对多的关系时,在子表类 Post 中需要通过 foreign key (外键)引用父表类 User 在Post类中指定ForeignKey: class P ...

  2. FlASK中的endpoint问题

    先贴一点有关的flask代码,时间有限,我慢慢扩充 以下是flask源码中app.py中add_url_rule的代码. 主要是view_func  -- endpoint -- url 之间的对应关 ...

  3. Flask 中的 SQLAlchemy 使用教程

    Flask 是一个 python web micro framework.所谓微框架,主要是 flask 简洁与轻巧,自定义程度高.相比 django 更加轻量级. 之前一直折腾 django,得益于 ...

  4. Flask中全局变量的实现

    我们都知道在Flask中g,request,session和request是作为全局对象来提供信息的,既然是全局的又如何保持线程安全呢,接下来我们就看看flask是如何做到这点的.在源码中的ctx.p ...

  5. JAVA WEB项目中生成验证码及验证实例(附源码及目录结构)

    [我是一个初学者,自己总结和网上搜索资料,代码是自己敲了一遍,亲测有效,现将所有的目录结构和代码贴出来分享给像我一样的初学者] 作用 验证码为全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计 ...

  6. flask框架----整合Flask中的目录结构

    一.SQLAlchemy-Utils 由于sqlalchemy中没有提供choice方法,所以借助SQLAlchemy-Utils组件提供的choice方法 import datetime from ...

  7. 第九篇 Flask 中的蓝图(BluePrint)

    第九篇 Flask 中的蓝图(BluePrint)   蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? ...

  8. Python框架学习之Flask中的常用扩展包

    Flask框架是一个扩展性非常强的框架,所以导致它有非常多的扩展包.这些扩展包的功能都很强大.本节主要汇总一些常用的扩展包. 一. Flask-Script pip install flask-scr ...

  9. Python框架学习之Flask中的蓝图与单元测试

    因为Flask框架的集成度很低,随着Flask项目文件的增多,会导致不太好管理.但如果对一个项目进行模块化管理的,那样子管理起来就会特别方便.而在Flask中刚好就提供了这么一个特别好用的工具蓝图(B ...

随机推荐

  1. Introduction and use of Cookie and Session(Cookie&Session的介绍和使用)

    一.Cookie 1.什么是Cookie? Cookie是HTTP协议的规范之一,它是服务器和客户端之间传输的小数据. 首先由服务器通过响应头把Cookie传输给客户端,客户端会将Cookie保存起来 ...

  2. "There is no tracking information for the current branch" 解决方法

    因为新创建的分支push到远程仓库后没有与本地分支关联,下面语句可以令远程分支与本地分支关联起来 git branch --set-upstream-to=origin/release_3.1.3 r ...

  3. postman安装

    安装包下载下来,解压缩到你喜欢的位置. 打开 Chrome 浏览器的「扩展程序」 点击「加载已解压的扩展程序...」按钮,找到你刚刚下载的安装包的位置,点击确定. 你去看看 Windows 的开始菜单 ...

  4. Android中的Context(一)

    Android中的Context(一) 在Android开发中,Context可以说是我们接触地非常多的一个概念了,也译作"上下文",但是这个上下文到底是什么却并不好理解. 通俗的 ...

  5. EVE-NG简单入门介绍

    此篇文章简单的介绍下模拟器EVE-NG的使用,具体包括Dynamips设备导入与运行,IOL设备的导入与运行,QEMU设备的导入与运行,客户端软件的安装,物理网络与虚拟网络的结合等. 一.导入镜像 D ...

  6. CSS3-3

    关于背景 一. 渐变&径向渐变(background-image: -webkit-linear-gradient() && background-image: -webkit ...

  7. 九、Linux上软件安装

    1. 在Linux上安装JDK: [步骤一]:上传JDK到Linux的服务器. * 上传JDK * 卸载open-JDK java –version rpm -qa | grep java rpm - ...

  8. Apache强制WWW跳转以及强制HTTPS加密跳转的方法

    一般我会较多的使用WORDPRESS程序,其在安装的时候我们如果直接用WWW打开,或者在后台设置WWW域名则默认会强制301指向WWW站点域名.而这里有使用ZBLOG或者TYPECHO等其他博客程序则 ...

  9. ctype.h

    isalpha:int isalpha(char ch);检查ch是否是字母.是字母返回非0,否则返回0. iscntrl: int iscntrl(int ch); 检查ch是否控制字符(其ASCI ...

  10. ubuntu16.04 登陆不进桌面

    ubuntu 16.04 登陆不进桌面 问题描述: 系统软件升级之后,重启,在登陆界面输入密码后,回车,闪现一次黑屏和一些代码,然后又重新回到登陆界面. 原因分析: 有两种可能: 1.主目录下的.Xa ...