1.1 cookie

  1、cookie简介

      1. cookie实质就是客户端硬盘中存放的键值对,利用这个特性可以用来做用户验证

      2. 比如:{“username”: “dachengzi”} #再次访问url就会携带这些信息过来

  2、前端操作cookie
      说明: 使用下面方法操cookie必须先引入jquery.cookie.js

      1. 前端获取cookie值:  var v = $.cookie('per_page_count');

      2. 前端设置cookie值:  $.cookie('per_page_count',v);

  3、后端操作cookie

      说明: response = HttpResponse(...)  或  response = render(request, ...)

      1. 后端设置cookie值:  response.set_cookie('username',"zhangsan")

      2. 后端后去cookie值:  request.COOKIES.get('username')

  4、使用cookie实现用户登录、注销 

from django.contrib import admin
from django.urls import path,re_path
from app01 import views urlpatterns = [
path('admin/', admin.site.urls),
re_path(r'login/$',views.login),
re_path(r'index/$',views.index),
re_path(r'logout/$',views.logout),
]

urls.py

from django.shortcuts import render,HttpResponse,redirect

def index(request):
username = request.COOKIES.get('username') # 获取cookie
if not username:
return redirect('/login/')
return HttpResponse(username) def login(request):
if request.method == "GET":
return render(request,'login.html',{'msg':''})
if request.method == "POST":
u = request.POST.get('username')
p = request.POST.get('pwd')
print(u,p)
if u == 'tom' and p == '':
res = redirect('/index/')
res.set_cookie('username',u ,max_age=10) # 设置500s免登陆
return res
else:
return render(request,'login.html', {'msg':'用户名或密码错误'}) def logout(req):
response = redirect('/login/')
#清理cookie里保存username
response.delete_cookie('username')
return response

views.py

    <form action="/login/" method="POST">
<input type="text" name="username" placeholder="用户名">
<input type="text" name="pwd" placeholder="密码">
<input type="submit" value="提交">
<p>{{ msg }}</p>
</form>

login.html

03: django进阶篇的更多相关文章

  1. 02:Django进阶篇

    目录:Django其他篇 01:Django基础篇 02:Django进阶篇 03:Django数据库操作--->Model 04: Form 验证用户数据 & 生成html 05:Mo ...

  2. Django进阶篇【1】

    注:本篇是Django进阶篇章,适合人群:有Django基础,关于Django基础篇,将在下一章节中补充! 首先我们一起了解下Django整个请求生命周期: Django 请求流程,生命周期: 路由部 ...

  3. django 进阶篇

    models(模型) 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 import MySQLdb def GetLi ...

  4. python Django 进阶篇

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

  5. Python之路【第十七篇】Django进阶篇

    规范 确立规范的好处: 代码可读性高 方便代码的定位极其查找 为以后代码扩容带来便利 场景: 在多个APP的场景下,单个app的URL函数功能较多的时候,我们可以通过以下方法来解决. 把Views写成 ...

  6. django进阶篇

    原文连接:http://www.cnblogs.com/wupeiqi/articles/5246483.html Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创 ...

  7. Python学习-day20 django进阶篇

    Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行 ...

  8. Django进阶篇(二)

    中间件 解析 django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后, django会根据自己的规则在合适的时机执行中间件中相应的方法. 在dja ...

  9. Python之路【第十六篇续】Django进阶篇

    Django请求生命周期 首先:对于所有的web框架来说本质就是一个socket服务端,浏览器是socket客户端 路由系统 在Django的urls中我们可以根据一个URL对应一个函数名来定义路由规 ...

随机推荐

  1. K8S in Action

    1,容器的概念 镜像 镜像仓库 容器 镜像层:Docker镜像由多层构成.好处:网络分发效率,减少镜像的存储空间 1.2 k8s 主节点 ,它承载着 Kubernetes 控制和管理整个集群系统的控制 ...

  2. guava中Multimap、Multiset使用

    guava中的Multimap接口 Multimap和java.util.Map接口没有任何继承关系.同Map一样,也是放键值对,但是Multimap的值是一个集合.同样支持泛型,假如键值对的key的 ...

  3. QML 与 C++ 交互

    前言 文档如是说,QML旨在通过C ++代码轻松扩展.Qt QML模块中的类使QML对象能够从C ++加载和操作,QML引擎与Qt元对象系统集成的本质使得C ++功能可以直接从QML调用.这允许开发混 ...

  4. 苹果cms如何添加播放器预加载和缓冲广告

    1,来到系统后台>>系统>>播放器参数设置  可以看到添加预加载和缓冲广告的输入框.文件格式为html 自己写一个html的网页上传到网站进行调用即可.链接前面不要加http或 ...

  5. Mybatis 中在xxx.mapper书写模糊查询

    1.在mybatis中,书写sql,有时候会有一些不细心,如: <!-- 首页商品 关键字搜索--> <select id="getGoodsByLikeTitle&quo ...

  6. 错误1919,配置ODBC数据源MS Access Database时发生错误ODEC错误

    WIN7 64位旗舰版安装OFFICE2003 提示:“错误1919,配置ODBC数据源MS Access Database时发生错误ODEC错误” 在64位系统上,32位软件的注册表的信息不是直接在 ...

  7. k8s中pod内dns无法解析的问题

    用k8s创建了pod,然后进入pod后,发现在pod中无法解析www.baidu.com,也就是出现了无法解析外面的域名的问题.经过高人指点,做个小总结.操作如下. 一,将CoreDNS 的Confi ...

  8. java分页原理及分类

    1.使用List接口最终subList()方法实现分页 2.直接使用数据库SQL语句实现分页 3.使用hibernate等框架实现跨数据库的分页 mybatis是面向SQL的,本质上和第二种分页方式相 ...

  9. 第三周总结&实验报告一

    第三周总结 在这周对Java进行了更深层次的学习,Java的学习也越来越难了,慢慢的加入了一些新的构造新的方法,还有许许多多简化代码的相关知识,我还是要认真的去吃透这些知识,自己也要慢慢的去研究一些题 ...

  10. Oracle JET Router 与 Module 数据传递

    Oracle JET 组件间数据传递方法. 路由:父路由:customers Router  子路由: cust Router 这里 Router 和 module 结合使用. customer 包括 ...