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


    把 视图传到前台的  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 文件,显示提示信息

  • 相关阅读:
    alloffthelights使用方法
    tweenMax学习笔记
    移动端获取手机摄像头和相册
    livereload使用方法
    Bower使用笔记
    github 远程仓库
    git for windows 本地仓库
    python 对文件操作
    Python 装饰器
    JavaScript 做的网页版扫雷小游戏
  • 原文地址:https://www.cnblogs.com/gdwz922/p/10081030.html
Copyright © 2020-2023  润新知