DJango项目第一章 验证码

Posted oscarli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DJango项目第一章 验证码相关的知识,希望对你有一定的参考价值。

我们现在在工程目录/meiduo_mall/apps中创建Django应用users,并在配置文件中注册users应用。

python manage.py startapp users  ---->  INSTALL_APPS注册

class User(AbstractUser):
    """用户模型类"""
    mobile = models.CharField(max_length=11, unique=True, verbose_name=手机号)

    class Meta:
        db_table = tb_users
        verbose_name = 用户
        verbose_name_plural = verbose_name

在配置文件中配置 

AUTH_USER_MODEL = users.User

执行数据库迁移

python manage.py makemigrations
python manage.py migrate

 

图片验证码

python manage.py startapp verifications   ---->  INSTALL_APPS注册

setting.py

# redis配置
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://192.168.186.128:6379/0",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
    "session": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://192.168.186.128:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
    "verify_codes": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://192.168.186.128:6379/2",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },

 

urls.py

urlpatterns = [
    url(rimage_codes/(?P<image_code_id>d+)$, views.ImangeCodeView.as_view()),
]

constants.py

# 图片验证码有效期 单位秒
IMAGE_CODE_REDIS_EXPIRES = 300

view.py

from django.http import HttpResponse
from django_redis import get_redis_connection
from rest_framework.views import APIView

# Create your views here.
from meiduo_mall.libs.captcha.captcha import captcha
from verifications import constants


class ImangeCodeView(APIView):
    """
    图片验证码
    """

    def get(self, request, image_code_id):
        # 生成验证码图片
        text, image = captcha.generate_captcha()
     # 获取redis数据库地址 
        redis_conn = get_redis_connection("verify_codes")
# 存入redis数据库 redis_conn.setex(
"img_%s" % image_code_id, constants.IMAGE_CODE_REDIS_EXPIRES, text)      # 返回数据到前端 return HttpResponse(image, content_type="images/jpg")

 

请求方式:GET /image_code/<image_code_id>/

                  传入 image_code_id 图片验证码编号 

返回内容 :返回图片文件 

 

以上是关于DJango项目第一章 验证码的主要内容,如果未能解决你的问题,请参考以下文章

第一章 新手入门

django项目中的验证码模块

第一章 使用功能测试协助安装Django

django项目登录中使用图片验证码

Django 项目试炼blog(10) --补充 滑动验证码

django项目验证码(PIL库实现)