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. tensorflow训练了10万次,运行完毕,对这个word2vec终于有点感觉了

    tensorflow训练了10万次,运行完毕,对这个word2vec终于有点感觉了 感觉它能找到词与词之间的关系,应该可以用来做推荐系统.自动摘要.相关搜索.联想什么的 tensorflow1.1.0 ...

  2. 【DB2】关闭表的日志功能

    2018.11.19 客户遇到一个问题,在import数据的时候,产生了大量的日志,客户的数据库是HADR模式,通过评估,这几张表是可以允许在备库上不查询的,表中的数据时临时的. 方案一:修改脚本,将 ...

  3. eclipse 首次使用配置

      这里是eclipse neo版本的配置  1.设置workspace 首次启动,选择指定的工作空间(workspace),用于存放java代码.

  4. Centos 6.5下的OPENJDK卸载和SUN的JDK安装、环境变量配置

    不多说,直接上干货! 说明 图形界面安装,会自带有Centos6.5自带的OPRNJDK!!! *********************************自带的OPENJDK的卸载****** ...

  5. PMP备考指南之相关事项介绍

    本文已同步至 GitHub/Gitee/公众号,感兴趣的同学帮忙点波关注~ PMP是当今IT.通信.建筑.等高新技术行业的热门资格认证,无论是技术升级管理,还是管理者的能力提升,都离不开PMP的理论体 ...

  6. Pelican+Github博客搭建详细教程

    操作系统:Mac OS / Linux 工具集: 1.Pelican--基于Python的静态网页生成器 2.马克飞象--Evernote出的Markdown文本编辑器 3.GoDaddy--域名供应 ...

  7. Python 工匠:善用变量来改善代码质量

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由鹅厂优文发表于云+社区专栏 作者:朱雷 | 腾讯IEG高级工程师 『Python 工匠』是什么? 我一直觉得编程某种意义上是一门『手艺 ...

  8. vue2.0读书笔记3 - router、vuex

    1.vue的应用场景.优势.劣势 优势 通常情况下,运行时效率更高:一个事件循环仅一次视图更新,无频繁的DOM操作: 数据与视图分离,通过管理数据流,控制页面的展现,便于维护.且高效: 数据双向绑定, ...

  9. windows server服务器上部署java+tomcat网站域名配置

    如果只是部署java项目的话,可以把IIS删除,然后在服务器上安装jdk tomcat 配置好环境变量,就和你在自己计算机上开发一样,把你的项目war包拷到tomcat下的webapps里(任意目录都 ...

  10. HTTP协议以及HTTP请求中8种请求方法

    HTTP协议以及HTTP请求中8种请求方法 什么是协议? 协议,是指通信的双方,在通信流程或内容格式上,共同遵守的标准. 什么是http协议? http协议,是互联网中最常见的网络通信标准. http ...