新闻项目-渲染主页及图形验证码
一丶渲染主页
将前端代码放入info目录下

在index中的views渲染主页
1 from . import blue_index 2 from flask import render_template 3 4 @blue_index.route('/') 5 def hello_world(): 6 return render_template("index/index.html")
1)渲染左侧小图标
1 from flask import current_app 2 3 @blue_index.route("/favicon.ico") 4 def favicon(): 5 return current_app.send_static_file("news/favicon.ico")
二丶图形验证码
在modules中创建一个新的文件夹名叫passport
在passport文件夹中创建名称叫views的pthon文件

完成蓝图的基本配置
__init__中:
1 from flask import Blueprint 2 3 blue_passport = Blueprint("passport",__name__,url_prefix="/passport") 4 5 from . import views
views中:
1 from . import blue_passport 2 3 @blue_passport.route("/image_code") 4 def image_code():
5 pass
manage中:
1 from info.modules.passport import blue_passport 2 3 app.register_blueprint(blue_passport)
前端逻辑处理
找到前端中的图形验证码,将src中的测试图片删除

ctrt加左键点击generateImageCode()进入js代码

补全generateImageCode()的js代码
1 // TODO 生成一个图片验证码的编号,并设置页面中图片验证码img标签的src属性 2 function generateImageCode() { 3 // 生成uuid 4 imageCodeId = generateUUID(); 5 // url:必须要能访问到image_code视图 6 var url = '/passport/image_code?imageCodeId='+imageCodeId; 7 // 将url赋值给img标签的src属性,只要src属性给赋值一个url,会立即向该url发送请求 8 $('.get_pic_code').attr('src', url); 9 }
在视图函数中打印测试是否配置成功
1 from flask import request 2 3 print(request.url)

后端逻辑处理
在info中创建一个utils文件夹,并utils文件夹中创建captcha
在captcha中导入生成图形验证码的代码

sr设置全局变量
在全局变量中设置为None,在用global将sr设置为全局变量赋值

逻辑思路

相关代码:
1 from . import blue_passport 2 from flask import request,abort,make_response 3 from info.utils.captcha.captcha import captcha 4 from info import sr,constants 5 @blue_passport.route("/image_code") 6 def image_code(): 7 # 1.接受参数(uuid) 8 imageCodeUUID = request.args.get("imageCodeId") 9 # 2.校验参数(判断uuid是否为空) 10 if not imageCodeUUID: 11 return abort(403) 12 # 3.生成图片验证码 13 name,imageCodeText,imageCodeIMAGE = captcha.generate_captcha() 14 # 4.保存图片验证码到redis 15 try: 16 sr.set("imageCode:"+imageCodeUUID,imageCodeText,ex=constants.IMAGE_CODE_REDIS_EXPIRES) 17 except: 18 return abort(500) 19 # 5.修改image的ContentType = 'image/jpg' 20 response = make_response(imageCodeIMAGE) 21 response.headers["Content-Type"] = 'image/jpg' 22 # 6.响应图片验证码 23 return response

浙公网安备 33010602011771号