把 视图传到前台的  JsonResponse(data=data) 先进行处理,之后再传到前台,

处理:引用自定义错误代码,把错误代码返回给前台,前台根据错误代码中文提示

class Code:
OK = "0"
DBERR = "4001"
NODATA = "4002"
DATAEXIST = "4003"
DATAERR = "4004"
METHERR = "4005"
SMSERROR = "4006"
SMSFAIL = "4007" SESSIONERR = "4101"
LOGINERR = "4102"
PARAMERR = "4103"
USERERR = "4104"
ROLEERR = "4105"
PWDERR = "4106" SERVERERR = "4500"
UNKOWNERR = "4501" error_map = {
Code.OK: "成功",
Code.DBERR: "数据库查询错误",
Code.NODATA: "无数据",
Code.DATAEXIST: "数据已存在",
Code.DATAERR: "数据错误",
Code.METHERR: "方法错误",
Code.SMSERROR: "发送短信验证码异常",
Code.SMSFAIL: "发送短信验证码失败", Code.SESSIONERR: "用户未登录",
Code.LOGINERR: "用户登录失败",
Code.PARAMERR: "参数错误",
Code.USERERR: "用户不存在或未激活",
Code.ROLEERR: "用户身份错误",
Code.PWDERR: "密码错误", Code.SERVERERR: "内部错误",
Code.UNKOWNERR: "未知错误",
}

  

在项目根目录中的utils目录下创建json_fun.py文件,用于处理json格式转化功能,处理视图的 data 数据

from django.http import JsonResponse
from .res_code import Code def to_json_data(errno=Code.OK, errmsg='', data=None, **kwargs):
json_dict = {'errno': errno, 'errmsg': errmsg, 'data': data} if kwargs:
json_dict.update(kwargs) return JsonResponse(json_dict)

 

在这个应用中的视图中导入处理文件并把处理结果返回前台 :

因为没有用到错误代码,:

import logging
from django.shortcuts import render
from django.views import View
from django.http import HttpResponse,JsonResponse
from django_redis import get_redis_connection # 建立与 redis 库连接 from utils.captcha.captcha import captcha
from . import constants
from ..users.models import Users
from utils.json_fun import to_json_data
from utils.res_code import * # 导入日志器
logger = logging.getLogger('django') class ImgCode(View):
'''
图片验证码
'''
def get(self, request, image_code_id):
text,img = captcha.generate_captcha() # 生成文字和图片验证码
# 把图片验证码和文字验证码存到指定的 redis 中
con_redis = get_redis_connection(alias='verify_codes')
img_key = 'img_{}'.format(image_code_id) #
con_redis.setex(img_key, constants.IMACE_CODE_REDIS_EXPIRES, text) # 以字典的形式存入到 redis logger.info('验证码:{}'.format(text)) return HttpResponse(content=img,content_type='images/jpg') class UserName(View):
'''
判断用户名是否存在
'''
def get(self, request, username):
# user = Users.objects.filter(username=username) # 从数据库中查用户名
# if not user:
# return HttpResponse('该用户名可以注册')
# else:
# return HttpResponse('该用户名已被注册')
count = user = Users.objects.filter(username=username).count() # 如果有返回 1 ,如果没有返回 0
# try:
# user = Users.objects.get(username=username)
# except Ellipsis as e:
# # 如果没找到数据,返回相应错误代码,和中文提示,
# return to_json_data(errno=Code.NODATA, errmsg=error_map[Code.NODATA])
data = {'username':username, 'count':count} # 定义个字典返回给前台 # return JsonResponse(data=data)
return to_json_data(data=data)

  在 base.html 文件中导入 js 文件,显示提示信息

潭州课堂25班:Ph201805201 django 项目 第十课 自定义错误码,完成图片验证码,用户是否被注册功能 (课堂笔记)的更多相关文章

  1. 潭州课堂25班:Ph201805201 django 项目 第二十课 数据库分析设计图 (课堂笔记)

    https://www.dbdesigner.net/

  2. 潭州课堂25班:Ph201805201 django框架 第十课 GET,POST 请求 文件上传,HttpResponse,cookie (课堂笔记)

    在项目中新建个APP, 在主目录中的配置文件中进行 APP 注册 在主目录中的 urls 文件中进行路径分配 新建 urrls 文件 进行分路由配置 创建模板文件 html 文件 写个 form 表单 ...

  3. 潭州课堂25班:Ph201805201 django 项目 第五课 静态页面转为模板 (课堂笔记)

    一.分析静态页面   1.静态vs动态 条目 静态页面 动态页面 网站内容 固定不变 经常变动 浏览器加载速度 更快(无需向服务器发起请求) 更慢 改变网站内容 很难(修改或者创建新的html页面) ...

  4. 潭州课堂25班:Ph201805201 django 项目 第三课 码云注册,django项目 (课堂笔记)

    d码云注册,登录, 创建项目: 生成秘钥 想看秘钥: 添加公钥 复制 ssh 连接 通过  git clone <ssh> 连接 在服务器上创建 python3 虚拟环境, 创建项目  p ...

  5. 潭州课堂25班:Ph201805201 django 项目 第十七课 用户登录,登出实现 (课堂笔记)

    登录,校验: 1,判断用户名输入是否为空, 2,判断用户名密码是否匹配, 3,记住我的功能,:将用户信息记到 session 中 请求方式: POST 在视图中: # 1,创建类# 2,获取前台参数# ...

  6. 潭州课堂25班:Ph201805201 django 项目 第十三课 短信验证码后台的实现 (课堂笔记)

    d 发送短信验证码之前,后台要得到三个参数 : 1,用户手机吗,, 2,用户输入的图片验证文本, 3,前台的 uuid , 在60秒内是否有发送短信的记录 只有用户输入的手机号,文本信息与 uudi ...

  7. 潭州课堂25班:Ph201805201 django 项目 第十一课 手机号是否存在,短信验证分析 (课堂笔记)

    判断手机号是否注册功能实现 1.分析 请求方法:GET url定义:/mobiles/(?P<mobile>1[3-9]\d{9})/ 请求参数:url路径参数 参数 类型 前端是否必须传 ...

  8. 潭州课堂25班:Ph201805201 django 项目 第八课 注册功能分析,图片验证码视图设计 (课堂笔记)

    1,用户名     是否已注册 2,手机号 是否被注册 3,图形验证码 4,短信验证码, 5,验证成功后,向后台提交数据:用户名,密码,手机号,短信验证 要写这五个视图, 获取图形验证码,请求方式:g ...

  9. 潭州课堂25班:Ph201805201 django 项目 第二十一课 文章主页 新闻列表页面功能 (课堂笔记)

    新闻列表页功能 1.分析 业务处理流程: 判断前端传的标签分类id是否为空,是否为整数.是否超过范围 判断前端传的当前文章页数是否为空,是否为整数.是否超过范围 请求方法:GET url定义:/new ...

随机推荐

  1. Python元组与列表的区别

    列表类似于我们用铅笔在纸上写字,写错了还可以擦掉:而元组则类似于用钢笔写字,写错了就擦不掉了,除非换张纸重写. 列表和元组的区别主要体现在一下几个方面: 列表属于可变序列,他的元素可以随时修改或删除: ...

  2. Django-model基础

    Django-model基础 在Django-ORM中表和类存在映射关系 表名<------------>类名 字段<------------>属性 表记录<------ ...

  3. pycaffe训练的完整组件示例

    pycaffe训练的完整组件示例 为什么写这篇博客 1. 需要用到pycaffe 因为用到的开源代码基于Caffe:要维护的项目基于Caffe.基本上是用Caffe的Python接口. 2. 训练中想 ...

  4. BFC的形成和排版规则

    何为bfc? BFC(Block Formatting Context)直译为“块级格式化范围”.是 W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和 ...

  5. 2. ELK 之kibana 简介、获取、安装

    简介 kibana是什么?简单理解就是一种可视化工具,比如日志记录之后的可视化操作工具,支持 折线图,饼状图,表格等,支持按时间维度等自定义维度角度 数据搜索.分析等等. 2.   获取 https: ...

  6. pyqt5界面使用

    安装配置了pyuic和pyrcc后再进行下面操作 1.打开:       位置(我的):C:\Users\AppData\Roaming\Python\Python35\site-packages\p ...

  7. autio的自动播放问题

    最近做年会相关内容,背景音乐插入了,电脑上没问题,移动版就出事了,下面做一下记录  <audio src="" autoplay="autoplay" l ...

  8. js网页下载csv格式的表格

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. JavaScript onmousewheel鼠标滚轮示例

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  10. Orleans2.0正式版发布

    2.0版本支持.net core. Orleans是一个微软研究创建的用于大规模分布式计算的框架,使用者不需要学习和应用复杂的并发或其他缩放模式. 根据我几个项目的使用经验来说,Orleans虽然有应 ...