第38章 Django集成验证码

在实现验证码功能的第3方库当中,要数captcha最为成熟,用的人也最多,咱也不例外,用pip3进行下载和安装。

38.1 captcha注册

在settings.py中的INSTALLED_APPS节点注册captcha。如果要调整与验证码相关的配置,也在这里进行。背景色、前景色、字体大小等都可以进行调整,更多内容,可到官网上查看。

INSTALLED_APPS = [ 'simpleui', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'captcha',]# 样式CAPTCHA_NOISE_FUNCTIONS = ('captcha.helpers.noise_null', 'captcha.helpers.noise_arcs', # 线 #'captcha.helpers.noise_dots', # 点)# 字体角度CAPTCHA_LETTER_ROTATION = (-10, 10)# 背景色CAPTCHA_BACKGROUND_COLOR = '#f5f7fa'# captcha 图片大小CAPTCHA_IMAGE_SIZE = (72, 28)# 验证码随机数个数CAPTCHA_LENGTH = 4

执行数据迁移命令,生成captcha所依赖的表。

python3 manage.py migrate

38.2 创建和验证

新建一个应用special, 新建urls.py文件,编写views.py文件。这个应用没有数据表要生成,可以不用集成到settings.py中。

from django.http import HttpResponsefrom captcha.models import CaptchaStorefrom captcha.helpers import captcha_image_urlimport json# 创建验证码def captcha(request): hash_key = CaptchaStore.generate_key() image_url = captcha_image_url(hash_key) captcha_str = {'hashkey': hash_key, 'image_url': image_url}return HttpResponse(json.dumps(captcha_str), content_type='application/json')# 验证验证码def check_captcha(request): hash_key = request.GET.get('hash_key', '') captcha_str = request.GET.get('captcha_str', '') if captcha_str and hash_key: # 取根据hashkey获取数据库中的response值 get_captcha = CaptchaStore.objects.get(hashkey=hash_key) # 如果验证码匹配 if get_captcha.response == captcha_str.lower(): result = True else: result = False else: result = False return HttpResponse(json.dumps({'result':result}), content_type='application/json')

打开special/urls.py文件,配置内容如下。

from django.urls import pathfrom . import viewsurlpatterns = [    path('captcha/', views.captcha),    path('check_captcha/', views.check_captcha),]

百万、千万别忘记把special/urls.py集成到sales/urls.py中。说太多不如代码来的直观,粘贴出来了,请欣赏。

from django.contrib import adminfrom django.urls import path, includeadmin.site.site_title = '销售管理系统'admin.site.site_header = '销售管理系统'urlpatterns = [ path('', admin.site.urls), path('captcha/', include('captcha.urls')), path('special/', include('special.urls')),]

就这样悄无声息,简单明了地集成好了。有关验证码地局部调用和刷新,请见下一篇。

(0)

相关推荐

  • python测试开发django-34.xadmin管理后台

    前言 django自带的admin后台管理页面有点丑陋,于是网上的大神优化了一版后台管理xadmin,并且开源了,在github开源下载到源码. 注意环境搭配: django  2.1.2 xadmi ...

  • 7 网页上显示字符串 render+{'string': string}+{{ string }}

    表白:黑白圣堂血天使,天剑鬼刀阿修罗.  讲解对象:/7 网页上显示字符串 render+{'string': string}+{{ string }} 作者:融水公子 rsgz  Django开发流 ...

  • 5 分钟,带你快速入门 Django DRF

    5 分钟,带你快速入门 Django DRF

  • Django 系列篇(五):路由篇(中)

    系列导读 01. Django 系列篇(一):Hello World! 02. Django 系列篇(二):配置篇(上) 03. Django 系列篇(三):配置篇(下) 04. Django 系列篇 ...

  • python测试开发django-17.admin后台管理

    前言 通常一个网站开发,需要有个后台管理功能,比如用后台管理发布文章,添加用户之类的操作.django的admin后台管理主要可以实现以下功能 基于admin模块,可以实现类似数据库客户端的功能,对数 ...

  • 推荐 2 款必备的 Django 开发神器

    推荐 2 款必备的 Django 开发神器

  • 第39章 Django调用验证码

    在保持不修改Django框架源代码的基准下,只好通过ajax调用captcha库返回验证码了.可惜vue.js不支持ajax功能,但好在有axios等第3方插件助力. 39.1 安装axios 要想使 ...

  • 第37章 Django集成高颜值UI,美...

    能坚持到这的朋友,恭喜你,终于有幸可以见到Django最激动人心.最撩人心的一面了.为了凑数字,废话说过太多了,这次就直奔主题吧. 37.1 创建工程并进行配置 用PyCharm.Eclipse开发工 ...

  • 《梁健续集:再启征程》第38章:一点希望

    第38章 一点希望 梁健一听,精神被调了起来. 这个事情是梁健最关心的事件之一.昨天在饭局上,他就听政府那边的一个副秘书长罗应峰说,市长召集他们开会,就是讨论地铁事故的责任追究问题.今天一早,饶俊逸就 ...

  • 王维传(第38章)

    第38章 远赴长安 一阵秋雨一层凉,一瓣落花一脉香. 这天,是721年八月初八,距离中秋节仅七天,距离重阳节仅一个月零一天. 对璎珞来说,这年的重阳节,是她生命中最重要的日子之一.这一天,她将青丝绾正 ...

  • 李本深《灵魂的重量》37、38章

    37."林大侠" 学习.劳动.写作,这三部曲成了林常平狱中生活的全部内容.他虽然没办法改变眼下这样的处境,却可以决定自己在这特殊处境之中的精神法则,随波而不逐流.这是一次艰苦的修炼 ...

  • 《人类图》第38章 草木先知

    每一种生命都是一个独特的宇宙.草木亦然. --波兰生命科学家  魏鼎 01 东方人对于草木的态度,大致略分三种.第一种.直接使用:比如茶叶.中药.梁木.庄稼:第二种.间接欣赏:比如景观.入画.引流.培 ...

  • 《道德经》38章《上德不德》悟读述杂【38】

    《道德经》38章《上德不德》悟读述杂【38】

  • 三界天子 第38章

    跳龙门 五日后,墨玉踏入清河郡地界,沿途所见,残垣断壁,荒芜凄凉,昔日人丁兴盛的村落城镇,此时四分五裂,物换星移,尘土碎石掩埋了支离破碎的家园. 统治者的权利游戏,是无数妻离子散的眼泪. 墨玉心急如焚 ...

  • 《论语》宪问篇:第31章到38章讲义

    14.31子曰:"不逆诈,不亿不信,抑亦先觉者,是贤乎!" 不逆诈,逆,就是反思,反推,事前推测.诈,就是被人欺诈自己. 不忆不信  忆,揣测 不信就是不守信,说话不算数. 先觉, ...