咸鱼笔记—Cookie和session


新手刚接触python,跟着教程学的,笔记是为了把我学到的知识梳理一遍,仅供参考。欢迎各路大神指点。

学习版本: Django 1.8. Python 3.5

Cookie

在这里插入图片描述
cookie是由服务器生成,存储在浏览器端的一小段文本信息。
cookie的特点:
1)以键值对方式进行存储。
2)通过浏览器访问一个网站时,会将浏览器存储的跟网站相关的所有cookie信息发送给该网站的服务器。request.COOKIES
3)cookie是基于域名安全的。
4)cookie是有过期时间的,如果不指定,默认关闭浏览器之后cookie就会过期。
应用案例cookie:记住用户名。安全性要求不高。
views.py

 def index(request):
    
        return render(request,'booktest/index.html')
    
    def login(request):
    
        if 'username' in request.COOKIES:  #如果用户名在cookie中
            username = request.COOKIES['username']     #调用
        else:   
            username = ''  #保存
        return render(request,'booktest/login.html',{'username':username})
    
    def login_check(request):
        username = request.POST.get('username')
        password = request.POST.get('password')
        remember = request.POST.get('remember')  #获取点击状态
        if username== '123' and password =='123':
            response = redirect('/index')  
            if remember == 'on':  #如果勾选“记住用户名”
                response.set_cookie('username',username,max_age=7*24*3600)  #获取输入的用户名存到cookie 中
    
            return response
        else:
            return redirect('/login')

login.html

   <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>登录案例</title>
    </head>
    <body>
    <form action="/login_check" method="post">
        用户名 <input type="text" name="username" value="{{username}}">
        密码 <input type="password" name="password"><br/>
        <input type="checkbox" name="remember">记住用户名
          <input type="submit" value="登录">
    
    </form>
    </body>
    </html>

urls.py

  from django.conf.urls import include,url
  from bookinfo import views
    
    urlpatterns = [
        url(r'^index$', views.index),
        url(r'^login$', views.login),
        url(r'^login_check$', views.login_check),

效果
在这里插入图片描述
刷新页面
在这里插入图片描述

session

在这里插入图片描述
session存储在服务器端。
session的特点:

  1. session是以键值对进行存储的。

  2. session依赖于cookie。唯一的标识码保存在sessionid cookie中。

  3. session也是有过期时间,如果不指定,默认两周就会过期。
    加粗样式

    使用session 记录账户密码 正确 。刷新后直接跳转到index

def index(request):
		    return render(request,'booktest/index.html')
	    
	    def login(request):
	        if request.session.has_key('islogin'):  
	            return redirect('/index')
	        else:
	            if 'username' in request.COOKIES:
	                username = request.COOKIES['username']
	            else:
	                username = ''
	            return render(request,'booktest/login.html',{'username':username})
	    
	    def login_check(request):
	        username = request.POST.get('username')
	        password = request.POST.get('password')
	        remember = request.POST.get('remember')
	        if username== '123' and password =='123':
	            response = redirect('/index')
	            if remember == 'on':
	                response.set_cookie('username',username,max_age=7*24*3600)
	            request.session['islogin'] = True  
	            return response
	        else:
	            return redirect('/login')

错误信息 (1146, “Table ‘bj18.django_session’ doesn’t exist”)
1、注释setting.py中
在这里插入图片描述
2、控制台输入 python manage.py syncdb
在这里插入图片描述
3、取消setting.py中的注释

成功
在这里插入图片描述
session:涉及到安全性要求比较高的数据。银行卡账户,密码

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐