1.settings

CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://192.168.8.102:6379/0",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
},
"session": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://192.168.8.102:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
},
"sms_code": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://192.168.8.102:6379/15",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
} # 保存 session数据到 Redis中
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "session" APPEND_SLASH=False

2.urls.py

    url(r'^check_sms.html', sms.check_sms,name="check_sms"),
url(r'^sms.html', sms.sms, name="sms"),

3.html

# check_sms.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>sms</title>
<script src="/static/plugins/jquery.min.js"></script>
<script> </script>
</head>
<body>
<form action="{% url 'check_sms' %}" method="post">
手机号:<input id="phone_num" type="text" name="phone_num" value="{{ phone }}" style="color: red" readonly="true"><span style="color: #761c19"></span>
<p></p>
密&nbsp;&nbsp;&nbsp;码:<input id="check_code" type="text" name="passwd" placeholder="请输入密码"><span style="color: #761c19"></span>
<p></p>
<input type="submit" value="登录" class="log">
{{ cookie_content }}
{{ session_content }}
{{ is_login }}
{{ username }}
{% csrf_token %}
</form> </body>
</html> # sms.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>sms</title> </head>
<body>
<form action="{% url 'sms' %}" method="post">
手机号:<input id="phone_num" type="text" name="phone_num" placeholder="请输入手机号"><span style="color: #761c19"></span>
<p></p>
密&nbsp;&nbsp;&nbsp;码:<input id="check_passwd" type="text" name="passwd" placeholder="请输入密码">&nbsp;&nbsp;<span style="color: red"></span>
<p></p>
验证码:<input id="code" type="text" name="code" placeholder="请输入验证码">&nbsp;&nbsp;<span style="color: red">{{ code }}</span>
<p></p>
<input type="submit" value="注册" class="reg">
{{ cookie_content }}
{{ session_content }}
{{ is_login }}
{{ username }}
{% csrf_token %}
</form> </body>
</html>

4.视图 sms.py

'''
# sms_code.py
#!/usr/bin/python env
# coding:utf-8 import random
def code(num=4):
res = ""
for i in range(num):
# 数字0-9
num1 = str(random.randint(0, 9))
# 大写字母A-Z
# a = chr(random.randint(65, 90))
# 小写字母a-z
# b = chr(random.randint(97, 122))
# res += random.choice([num1, b])
res += random.choice([num1])
return res
''' #!/usr/bin/python env
# coding:utf-8
from exta_function import redis_con
from django.shortcuts import redirect, render, HttpResponse
from django_redis import get_redis_connection
from exta_function import sms_code
import json def sms(request):
if request.method == "GET":
code = sms_code.code(6)
request.session["code"] = code
return render(request, "sms/sms.html", locals())
elif request.method == "POST":
phone_num = request.POST.get("phone_num")
phone_num1 = "sms_" + str(phone_num)
passwd = request.POST.get("passwd")
code = request.POST.get("code")
conn = get_redis_connection("sms_code")
keys = conn.keys(phone_num1)
if keys:
return HttpResponse("用户已注册过!") elif request.session.get("code") == code:
# 注册功能
# 手机号 有效期 密码
# reids 存储数据格式 SETEX sms_18501020304 300 323242
conn = get_redis_connection("sms_code")
key = "sms_" + str(phone_num)
t = 600
val = passwd
conn.setex(key, t, val)
request.session["is_login"] = "true"
request.session['username'] = 'wangwu'
request.session["phone"] = phone_num
session_content = request.session
cookie_content = request.COOKIES
print(conn.get(key).decode("utf-8"))
return redirect("check_sms.html")
else:
return HttpResponse("验证码错误") def check_sms(request):
if request.method == "GET":
code = sms_code.code(6)
phone = request.session["phone"]
return render(request, "sms/check_sms.html", locals())
elif request.method == "POST":
# 验证功能 phone_num check_code
phone_num = request.POST.get("phone_num")
passwd = request.POST.get("passwd")
code = request.session["code"]
key = "sms_" + str(phone_num) conn = get_redis_connection("sms_code") print("recv: ", key, passwd)
print(conn.get(key))
if not conn.get(key):
return redirect("sms.html")
elif conn.get(key) == passwd.encode("utf-8"):
cookie_content = request.COOKIES
is_login = request.session["is_login"]
username = request.session["username"] dic_data = {
"cookie_content": cookie_content,
"is_login": is_login,
"username": username,
}
print("cookie_content: ", cookie_content)
print(conn.get(phone_num)) return HttpResponse(json.dumps(dic_data))
else:
return HttpResponse("密码错误")

Django Redis验证码 密码 session 实例的更多相关文章

  1. Django 之验证码实现

    1. django-simple-captcha 模块 安装 django-simple-captcha pip install django-simple-captcha pip install P ...

  2. Linux中python3,django,redis以及mariab的安装

    1. Linux中python3,django,redis以及mariab的安装 2. CentOS下编译安装python3 编译安装python3.6的步骤 1.下载python3源码包 wget ...

  3. Django之Cookie、Session、CSRF、Admin

    Django之Cookie.Session.CSRF.Admin   Cookie 1.获取Cookie: 1 2 3 4 5 6 request.COOKIES['key'] request.get ...

  4. pyhton框架Django之cookie和session

    一,cookie和session的理解 cookies 是浏览器为 Web 服务器存储的一小段信息. 每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的cookies.它保存在浏览器下的某个文 ...

  5. 第4天:Django的cookie和session

    Cookie Session Cookie 浏览器请求服务器是无状态的,它的每一次请求对于服务器来说都是新的,服务器默认不会保存用户的状态数据.但很多时候,服务器需要保存用户的一些状态数据,比如用户是 ...

  6. 第二百七十节,Tornado框架-生成验证码图片,以及验证码结合Session验证

    Tornado框架-生成验证码图片,以及验证码结合Session验证 第一.生成验证码图片  生成验证码图片需要两个必须模块 1.python自带的random(随机模块) 2.Pillow()图像处 ...

  7. Django(5) session登录注销、csrf及中间件自定义、django Form表单验证(非常好用)

    一.Django中默认支持Session,其内部提供了5种类型的Session供开发者使用: 数据库(默认) 缓存 文件 缓存+数据库 加密cookie 1.数据库Session 1 2 3 4 5 ...

  8. Django中Cookie和Session配置和操作

    Cookie Cookie以键值对Key-Value形势进行信息的存储. Cookie基于域名安全,不同域名的Cookie是不能互相访问的 Cookie是存储在浏览器中的一段纯文本信息,建议不要存储敏 ...

  9. 基于redis的处理session的方法

    一个基于redis的处理session的方法,如下. <?php class Session_custom { private $redis; // redis实例 private $prefi ...

随机推荐

  1. Java之集合(二十四)ConcurrentLinkedDeque

    转载请注明源出处:http://www.cnblogs.com/lighten/p/7517454.html 1.前言 本章介绍并发队列ConcurrentLinkedDeque,这是一个非阻塞,无锁 ...

  2. Linux下安装jdk8步骤详述(转载)

    Linux下安装jdk8步骤详述 原文地址:http://www.cnblogs.com/shihaiming/p/5809553.html 作为Java开发人员,在Linux下安装一些开发工具是必备 ...

  3. springboot自定义错误页面

    springboot自定义错误页面 1.加入配置: @Bean public EmbeddedServletContainerCustomizer containerCustomizer() { re ...

  4. hbase集群中其中某个regionserver 没有启动

    第一步: date命令查看各个机器的时间 发现linux02机器时间差了2个多小时 第二步:ntpdate pool.ntp.org 修改错误时间的机器 第三步: 重启 hbase

  5. springcloud-03-服务注册

    新建一个 provider-user 和consumer-movie, user为服务提供者, movie为服务的消费真, 没有什么难的, 直接上代码 microserver-provider-use ...

  6. 笔记三:python乱码深度剖析一

    一:学习内容 python编码转换 python乱码原因深入解析 二:python编码转换 1. Python内部字符串一般都是Unicode编码,代码中字符串的默认编码与代码文件本身的编码是一致的. ...

  7. jquery ajax abort()方法

    如果用户频繁点击ajax请求,除最后一个外都是无效的,趁早结束节省资源.也可能出现更严重的问题,最后一个发送的请求,响应未必是最后一个,有可能造成混乱.用jquery的abort方法,可以中途中止aj ...

  8. 【LeetCode题解】142_环形链表2(Linked-List-Cycle-II)

    目录 描述 解法一:哈希表 思路 Java 实现 Python 实现 复杂度分析 解法二:双指针 思路 Java 实现 Python 实现 复杂度分析 描述 给定一个链表,返回链表开始入环的第一个节点 ...

  9. JAVA项目将 Oracle 转 MySQL 数据库转换(Hibernate 持久层)

    项目开发时用的是Oracle数据库,但为了更好的做分布式,做集群,我们要将数据库转成 MySQL! 在数据库迁移中首先要做的事是将 Oracle 的表结构以及数据 克隆到 MySQL 数据库. 这点不 ...

  10. javascript实例——文本特效篇(包含3个小例子)

    1.标题跑马灯 常常能够在一些新闻网站,或者其他地方,看到文字在一个特定的区域内,来回滚动.一旦超出边界就消失了,那么这些效果是如何做到的呢,今天我们就来讲讲. 图示效果: 源代码: <!doc ...