一、Session

  1.settings.py 

SESSION_ENGINE = 'django.contrib.sessions.backends.db'   # 引擎(默认)

    SESSION_COOKIE_NAME = "sessionid"                       # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认)
SESSION_COOKIE_PATH = "/" # Session的cookie保存的路径(默认)
SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名(默认)
SESSION_COOKIE_SECURE = False # 是否Https传输cookie(默认)
SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http传输(默认)
SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期(2周)(默认)
SESSION_EXPIRE_AT_BROWSER_CLOSE = True # 是否关闭浏览器使得Session过期(默认)
SESSION_SAVE_EVERY_REQUEST = True # 是否每次请求都保存Session,默认修改之后才保存(默认)

  2.views.py

 def home(request):
# v = request.COOKIES.get('uuu')
v = request.session.get('user')
if v:
return HttpResponse("登录成功: [%s]" % v)
else:
return redirect('/login/') def login(request):
if request.method == 'GET':
return render(request, 'login.html', {'msg': ''})
else:
u = request.POST.get('user')
p = request.POST.get('pwd')
ct = UserInfo.objects.filter(username=u, password=p).count()
if ct:
obj = redirect('/home/')
# 方法一写cookie
# obj.set_cookie('uuu', u, 30)
# 方法二写session
# 生成随机字符串
# 发送给客户端
# 保存服务器
request.session['user'] = u
request.session['pass'] = p
return obj
else:
return render(request, 'login.html', {'msg': "用户名或者密码错误!"})

  3.session其它方法

 def index(request):
# 获取、设置、删除Session中数据
request.session['k1']
request.session.get('k1',None)
request.session['k1'] = 123
request.session.setdefault('k1',123) # 存在则不设置
del request.session['k1'] # 所有 键、值、键值对
request.session.keys()
request.session.values()
request.session.items()
request.session.iterkeys()
request.session.itervalues()
request.session.iteritems() # 用户session的随机字符串
request.session.session_key # 将所有Session失效日期小于当前日期的数据删除
request.session.clear_expired() # 检查 用户session的随机字符串 在数据库中是否
request.session.exists("session_key") # 删除当前用户的所有Session数据
request.session.delete("session_key") request.session.set_expiry(value)
* 如果value是个整数,session会在些秒数后失效。
* 如果value是个datatime或timedelta,session就会在这个时间后失效。
* 如果value是0,用户关闭浏览器session就会失效。
* 如果value是None,session会依赖全局session失效策略。

二、ajax

  1.页面login.html

 <body>
<div id="block">
<label id="user" for="name">p</label>
<input type="text" name="username" id="name" placeholder="Username" required/>
<label id="pass" for="password">k</label>
<input type="password" name="password" id="password" placeholder="Password" required />
<input type="button" id="submit" name="submit" value="login"/>
</div> <script src="/static/jquery-1.12.4.js"></script>
<script>
$(function(){
bind_button();
}) function bind_button(){
$("#submit").click(function(){
var u = $("#name").val();
var p = $("#password").val();
$.ajax({
url: "{% url 'LOGIN' %}",
type: "POST",
data: {user:u, passwd:p},
dataType: "JSON",
success: function(data){
if(data.status){
location.href = "/host/"
}else{
alert(data.error)
}
}
})
})
}
</script>
</body>

  2.views.py

import json

def login(request):
if request.method == 'POST':
user = request.POST.get('user')
passwd = request.POST.get('passwd')
obj = Users.objects.filter(username=user, password=passwd).first()
res = {'status': True, 'error': None}
if obj:
request.session['user'] = user
request.session['passwd'] = passwd
return HttpResponse(json.dumps(res))
else:
res['status'] = False
res['error'] = "用户名或者密码错误"
return HttpResponse(json.dumps(res)) elif request.method == 'GET':
return render(request, 'login1.html', locals())

  3.AJAX序列化二种方式

  关于Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,特别的Ajax请求一般返回的为Json格式。

  A.serializers

from django.core import serializers
ret = models.BookType.objects.all()
data = serializers.serialize("json", ret)

  B.json

import json

res = {'status': True, 'error': None}
return HttpResponse(json.dumps(res))

  

python16_day17【Django_session、ajax】的更多相关文章

  1. Python全栈【进程、线程】

    Python全栈[进程.线程] 本节内容: 进程 线程 协程 I/O多路复用 进程 1.进程就是一个程序在一个数据集上的一次动态执行过程,进程是资源分配的最小单元. 2.进程一般由程序.数据集.进程控 ...

  2. 【Collection、泛型】

    [Collection.泛型] 主要内容 Collection集合 迭代器 增强for 泛型 第一章 Collection集合 1.1 集合概述 集合:集合是java中提供的一种容器,可以用来存储多个 ...

  3. JavaSpring【一、概述】

    主要内容 JavaSpring[一.概述] JavaSpring[二.IOC] JavaSpring[三.Bean] JavaSpring[四.Bean管理注解实现] JavaSpring[五.AOP ...

  4. JavaWeb【一、简介】

    原计划上周完成的内容,硬是过了一个清明拖到了这周,工作上还有很多东西没做...明天抓紧看把,争取这周末搞定 内容简介:(学习完后会重新梳理调整) 1.JavaWeb[一.简介] 2.JavaWeb[二 ...

  5. JavaJDBC【一、概述】

    其实这个内容在学习java基础的时候就有看过了,只是没有详细整理,在这再整理一下 数据库操作对于任何一门后端语言来说都是很重要的 JDBC:Java Data Base Connectivity 内容 ...

  6. Java注解【一、概述】

    前面几篇Java学习笔记都是半夜写的,比较伤身体,今天开始想调整生物钟,早上起来学2小时,看看能坚持多久 本周目标: 1.JavaJDBC使用 2.JavaWeb编程 3.Java框架基础(反射+注解 ...

  7. Java反射【一、概述】

    .net也使用过反射,不过用的比较浅显,用来记日志等.. Java基础课程学习已经过了一段时间了,接下来继续学习 本次学习包含以下内容 Java反射[一.概述] Java反射[二.Class类的使用] ...

  8. 01 语言基础+高级:1-6 集合_day02【Collection、泛型】

    day02[Collection.泛型] 主要内容 Collection集合 迭代器 增强for 泛型 教学目标 能够说出集合与数组的区别 说出Collection集合的常用功能 能够使用迭代器对集合 ...

  9. 01 语言基础+高级:1-4 接口与多态_day10【接口、多态】&&day11【final、匿名内部类】

    day10[接口.多态] 接口三大特征——多态引用类型转换 教学目标写出定义接口的格式写出实现接口的格式说出接口中成员的特点能够说出使用多态的前提条件理解多态的向上转型理解多态的向下转型 day10_ ...

随机推荐

  1. flutter table 在showModalBottomSheet中

    问题是,不知道为什么又可以了.原来是显示黑屏,没有输出. showModalBottomSheet<void>( context: context, builder: (BuildCont ...

  2. 如何在调试Window App时,触发 Suspending ,Resuming 等事件

    Visual Studio prevents Windows from suspending an app that is attached to the debugger. This is to a ...

  3. 上下居中css

    .css{ position: relative, top: 50%, transform: translateY(-50%) }

  4. jQuery特效:图片的轮播

    Flexslider图片轮播.文字图片相结合滑动切换效果 地址:http://www.helloweba.com/view-blog-265.html 示例:http://www.helloweba. ...

  5. 【Google Earth】pro之视频录制

    一.谷歌地球文件简介 谷歌地球能识别的文件分为:gpx.kml.kmz文件.谷歌地球的官方文件为kml和kmz,其中kmz是kml和图片.模型等数据的压缩文件,kml为数据信息文件,也可以分为航迹和字 ...

  6. js转译html标签

    api返回的接口数据是这样的"<div>测试数据</div>" js拼接html时会过滤掉<div></div> 所以需要对< ...

  7. Windows平台安装最新OpenCV-2.4.9,利用Eclipse、MinGW构建C++调用OpenCV开发环境

    近期电脑重装系统了,第一件事重装OpenCV. 这次直接装最新版,2014-4-25日公布的OpenCV2.4.9版本号,下载链接: http://sourceforge.net/projects/o ...

  8. JavaScript------获取表单信息

    <form name="fname"> <input type="text" name="user" /> < ...

  9. 74、shape 画圆 加 边框

    <?xml version="1.0" encoding="utf-8"?> <!--<shape xmlns:android=&quo ...

  10. [HackerRank] The Longest Common Subsequence

    This is the classic LCS problem. Since it requires you to print one longest common subsequence, just ...