1. . Cookie是什么
  2. 保存在浏览器端的键值对
  3.  
  4. 为什么要有Cookie?
  5. 因为HTTP请求是无状态的
  6.  
  7. Cookie的原理?
  8. 服务端可以在返回响应的时候 做手脚
  9. 在浏览器上写入键值对(Cookie
  10.  
  11. 浏览器发送请求的时候会自动携带该网站保存在我浏览器的键值对(Cookie
  12.  
  13. Django 从请求携带的Cookie中取值:
  14. request.COOKIES.get("is_login")
  15. request.get_signed_cookie(key, default=None, salt="xxx")
  16. Django中设置Cookie:(针对的是响应对象)
  17. rep = HttpResponse()/render(request, "test.html)/redirect()
  18. rep.set_signed_cookie(key, value, salt="xxx", max_age=)
  19. Django中删除Cookie:(注销)
  20. rep.delete_cookie(key)
  21.  
  22. . Session是什么
  23. Session保存在服务端的键值对
  24.  
  25. Session依赖于Cookie
  26.  
  27. dsadasdsadsafsjkndf: {"is_login": , "name": "xiaohei", "age":}
  28. dsaasdaknfgreryywdf: {"is_login": , "name": "xiaobai", "age":}
  29. wqrqrteknfgzddasqfg: {"is_login": , "name": "xiaohui", "age":}
  30.  
  31. 给浏览器写入Cookie:
  32. sessionid:wqrqrteknfgzddasqfg
  33.  
  34. . 从用户发来的请求的Cookie中 根据 sessionid 取值, 取到 wqrqrteknfgzddasqfg
  35. . 根据特殊字符串找到对应的 Session 数据 --> {"is_login": , "name": "xiaohui", "age":}
  36. . request.session.get("is_login") --> 从Session取值
  37.  
  38. Django中设置Session:
  39. request.session["is_login"] =
  40. request.session.set_expiry() # 设置超时时间 (Cookie和Session数据的)
  41.  
  42. 在settings.py中设置,每次请求都刷新Session超时时间
  43. SESSION_SAVE_EVERY_REQUEST = True
  44.  
  45. Django中删除Session:
  46. request.session.flush() 清除Cookie和Session数据
  47.  
  48. request.session.clear_expired() 将所有Session失效日期小于当前日期的数据删除
  49.  
  50. 今日内容
  51. AJAX
  52.  
  53. . 预备知识 JSON
  54.  
  55. . 我们之前已经学过的发请求的方式:
  56. . 直接在地址栏输入URL回车 GET请求
  57. . a标签 GET请求
  58. . form表单 GET/POST请求
  59. . AJAX GET/POST请求
  60.  
  61. . AJAX 特点:
  62. . 异步
  63. . 局部刷新浏览器(偷偷发请求)
  1. . 回顾了一下json数据格式
  2. . JS对象 json数据格式的互相转换
  3. . Python中数据 json数据格式的互相转换
  4. . AJAX
  5. . 我们前端往后端发请求的方式:
  6. . 直接在地址栏输入URL
  7. . a标签
  8. . form表单
  9. . AJAX
  10.  
  11. HTTP请求的类型:
  12. GET
  13. POST
  14. . AJAX特点:
  15. . 异步
  16. . 局部刷新(偷偷发请求)
  17.  
  18. . AJAX缺点:
  19. 请求零碎,滥用对服务端压力大
  20.  
  21. . jQuery封装的AJAX方法:
  22. 先导入 jquery.js
  23.  
  24. $.ajax({
  25. url: "/test/",
  26. type: "post",
  27. data: {"key": "value", "key2":[[, , ], [, , ]]},
  28. success: function(arg){
  29. // 请求得到响应的时候,自动执行这个回调函数
  30. console.log(arg);
  31. }
  32. })
  33.  
  34. 今日内容
  35. . form组件的介绍
  36.  
  37. 之前web开发的模式,以注册为例:
  38. . 要有一个注册的页面,页面里面要有form表单 --> 生成HTML代码
  39. . form表单要能提交数据到后端,后端要做有效性校验 --> 数据有效性校验
  40. . 要把校验的提示信息展示在页面上 --> 校验信息返回并展示,保存原来填写的内容
  41.  
  42. 关于校验:
  43. . 前端通过JS代码做校验 --> 最好有
  44. . 后端做校验 --> 必须要有(因为前端的校验可以被跳过)
  45.  
  46. . form组件的用法
  47. . from django import forms
  48. 定义一个form
  49. class RegForm(forms.Form):
  50. user = forms.CharField()
  51. pwd = forms.CharField()
  52. email = forms.EmailField()
  53.  
  54. 生成HTML
  55. . 实例化一个form对象, 传递到模板语言中
  56. . 在目标语言中调用form对象的响应方法和属性
  57.  
  58. 三种方式:
  59. . {{ form_obj.as_p }}
  60. . 单独写
  61. {{ form_obj.pwd.label }}
  62. {{ form_obj.pwd }}
  63.  
  64. 做校验:
  65. . form_obj = RegForm(request.POST)
  66. . form_obj.is_valid()
  67.  
  68. 内置的正则校验器的使用
  69. mobile = forms.CharField(
  70. label="手机",
  71. # 自己定制校验规则
  72. validators=[
  73. RegexValidator(r'^[0-9]+$', '手机号必须是数字'),
  74. RegexValidator(r'^1[3-9][0-9]{9}$', '手机格式有误')
  75. ],
  76. widget=widgets.TextInput(attrs={"class": "form-control"}),
  77. error_messages={
  78. "required": "该字段不能为空",
  79. }
  80. )
  81.  
  82. 看源码:
  83.  
  84. form_obj.is_valid()都干了什么?
  85.  
  86. self._errors = ErrorDict() --> {}
  87. self.cleaned_data = {}
  88.  
  89. self.fields.items()
  90. 字段名 字段对象
  91.  
  92. 如果有错误:
  93. self._errors["name"] = ""
  94.  
  95. 没有报错:
  96. self.cleaned_data["name"] = value(用户填写的值)
  97.  
  98. 注意:
  99. 钩子函数(hook)的使用
  100.  
  101. def clean_xx():
  102. """具体字段的自定义校验方法"""
  103. pass
  104.  
  105. def clean():
  106. """全局的自定义校验方法"""
  107. pass
  108.  
  109. errors:
  110.  
  111. <ul class="errorlist">
  112. <li>name
  113. <ul class="errorlist">
  114. <li>不符合社会主义核心价值观!</li>
  115. </ul>
  116. </li>
  117. <li>__all__
  118. <ul class="errorlist nonfield">
  119. <li>两次密码不一致</li>
  120. </ul>
  121. </li>
  122. </ul>
  1.  
  2. 今日内容
  3. 中间件:http://www.cnblogs.com/liwenzhou/p/8761803.html
  4.  
  5. . URL的白名单 url = ["/xx/", "/oo/", "/haha/"]
  6. . 登陆之后才能访问某些URL 之前使用装饰器
  7.  
  8. 中间件的定义:
  9. wsgi之后 urls.py之前 在全局 操作Django请求和响应的模块!
  10.  
  11. 中间件的使用:
  12. 5个固定的方法
  13. process_request(self, request)
  14. 执行顺序:
  15. 按照注册的顺序(在settings.py里面设置中 从上到下的顺序)
  16. 何时执行:
  17. 请求从wsgi拿到之后
  18. 返回值:
  19. 返回None,继续执行后续的中间件的process_request方法
  20. 返回response , 不执行后续的中间件的process_request方法
  21.  
  22. process_response
  23. 执行顺序:
  24. 按照注册顺序的倒序(在settings.py里面设置中 从下到上的顺序)
  25. 何时执行:
  26. 请求有响应的时候
  27. 返回值:
  28. 必须返回一个response对象
  29.  
  30. process_view(self, request, view_func, view_args, view_kwargs):
  31. 执行顺序:
  32. 按照注册的顺序(在settings.py里面设置中 从上到下的顺序)
  33. 何时执行:
  34. urls.py中找到对应关系之后 在执行真正的视图函数之前
  35. 返回值:
  36. 返回None,继续执行后续的中间件的process_view方法
  37. 返回response,
  38.  
  39. process_exception(self, request, exception)
  40. 执行顺序:
  41. 按照注册顺序的倒序(在settings.py里面设置中 从下到上的顺序)
  42. 何时执行:
  43. 视图函数中抛出异常的时候才执行
  44. 返回值:
  45. 返回None,继续执行后续中间件的process_exception
  46. 返回response
  47.  
  48. process_template_response(self, request, response)
  49. 执行顺序:
  50. 按照注册顺序的倒序(在settings.py里面设置中 从下到上的顺序)
  51. 何时执行:
  52. 视图函数执行完,在执行视图函数返回的响应对象的render方法之前
  53. 返回值:
  54. 返回None,继续执行后续中间件的process_exception
  55. 返回response
  56.  
  57. Django调用 注册的中间件里面五个方法的顺序:
  58. . process_request
  59. urls.py
  60. . process_view
  61. view
  62. . 有异常就执行 process_exception
  63. . 如果视图函数返回的响应对象有render方法,就执行process_template_response
  64. . process_response
  65.  
  66. Django已经学过的知识点:
  67. . Urls.py 路由系统:
  68.  
  69. 正则
  70. 分组匹配 --> 位置参数
  71. 分组命名匹配 --> 关键字参数
  72.  
  73. 分级路由
  74. include
  75.  
  76. 给路由起别名
  77. name="xx"
  78.  
  79. 反向解析url
  80. view
  81. from django.urls import reverse
  82.  
  83. reverse("xx", args=[, , ])
  84. reverse("xx", kwargs={”k": "v"})
  85.  
  86. 自取其辱
  87.  
  88. . 视图 views.py
  89. request
  90. request.method
  91. request.GET --> URL里面的参数
  92. request.POST --> post请求的数据
  93.  
  94. request.path_info --> 路径
  95. request.get_full_path() --> 路径加路径的参数
  96.  
  97. response
  98. 新手必备3件套
  99. render(request, "xx.html", {“k”: "v", ...})
  100. HttpResponse("响应")
  101. redirect("/index/")
  102. redirect("http://www.luffycity.com")
  103.  
  104. from django.http import JsonResponse
  105. JsonResponse()
  106.  
  107. FBVCBV
  108.  
  109. 函数装饰器和方法装饰器的区别
  110.  
  111. . 模板
  112.  
  113. filter
  114. 内置的filter方法
  115. 自定义的filter方法
  116.  
  117. tag
  118. 内置的tag
  119. 自定义的simpleTag
  120. 自定义的inclusionTag
  121.  
  122. 母版和继承
  123.  
  124. {% extends base.html %}
  125.  
  126. {% block page-main %}
  127. {% block small %}
  128. {% endblock small %}
  129. {% endblock page-main %}
  130.  
  131. 组件 {% include nav %}
  132.  
  133. 静态文件相关的tag
  134.  
  135. 在模板语言里面反向解析url
  136.  
  137. {% url 'url的别名' xx %}
  138.  
  139. . ORM
  140.  
  141. 对应关系
  142. --> 数据表
  143. 对象 --> 数据行
  144. 属性 --> 字段
  145.  
  146. Django连接MySQL数据库的步骤:
  147. . 手动创建库
  148. . 配置settings.py中数据库的连接信息
  149. . 修改settings.py同目录下的__init__.py文件,添加两句
  150. import pymysql
  151. pymysql.install_as_MySQLdb()
  152. . app下面的models.py中定义类,类一定要继承mdoels.Model
  153. . 执行两句命令
  154. . python manage.py makemigrations
  155. . python manage.py migrate
  156.  
  157. 操作数据表
  158.  
  159. 操作数据行(增删改查)
  160. 单表
  161. 外键
  162. 多对多
  163. 一对一
  164.  
  165. ORM高级:
  166. 常用字段和方法
  167. 必知必会13
  168. 神奇的双下划线
  169. 跨表的正向查询反向查询
  170.  
  171. FQ
  172.  
  173. 聚合和分组
  174.  
  175. 事务
  176.  
  177. 执行原生的SQL语句
  178.  
  179. . CookieSession,分页
  180.  
  181. . AJAX
  182.  
  183. $.ajax({
  184. url “”,
  185. type: "post",
  186. data: {"k1": JSON.stringify([,,])},
  187. success:function(data){
  188.  
  189. }
  190. })
  191. . form表单
  192.  
  193. . 中间件

Ajax cookie session form组件的更多相关文章

  1. python全栈开发day72-django之Form组件

    一.ajax 1. 复习JSON 1. JSON是什么? 一种数据格式,和语言无关的数据格式. 2. Python里面转换 1. Python对象 --> 字符串 import json 字符串 ...

  2. Web框架之Django_08 重要组件(form组件、cookie和session组件)

    摘要: form组件 cookie组件 session组件 一.form组件 form介绍我们之前在html页面中利用form表单向后端提交数据时候,都需要对用户的输入进行校验,比如校验用户是否输入正 ...

  3. 探索form组件和cookie,session组件

    一. 实现注册功能 后端代码: from django.shortcuts import render,HttpResponse,redirect from app01 import models C ...

  4. Form组件 cookie和session

    django form组件 1.渲染标签 2.校验数据 3.展示信息 第一步需要一个form类 from django import forms class MyForm(forms.Form): n ...

  5. Django form组件 与 cookie/session

    目录 一.form组件 二.cookie.session 返回Django 组件 一.form组件 1.1 以注册功能为例 注册功能 1.渲染前端标签获取用户输入 --> 渲染标签 2.获取用户 ...

  6. form组件及cookie和session

    多对多关系表的三种创建方式 1.全自动创建 优势:不需要你手动创建第三张表 不足:由于第三张表不是你手动创建的,也就意味着,第三张表字段是固定的无法更改 class Book(models.Model ...

  7. form组件注册ajax登录auth认证及验证码

    本项目采用django自带的数据库 项目文件 models.py from django.db import models from django.contrib.auth.models import ...

  8. 利用Form组件和ajax实现的注册

    一.注册相关的知识点 1.Form组件 我们一般写Form的时候都是把它写在views视图里面,那么他和我们的视图函数也不影响,我们可以吧它单另拿出来,在应用下面建一个forms.py的文件来存放 2 ...

  9. django form组件 cookies,session

    django form组件 渲染标签  就是组件里面的字段在前端展示叫做渲染标签 校验数据  用户输入的数据提交给后端组件叫做校验数据 forms组件中定义的字段都是必须传值的(required=Tr ...

随机推荐

  1. 1.网站js文件获取

    ++++++++++++++++++++++ pls,input your domain like: http://111.com #coding:utf8 #encoding=utf8 import ...

  2. ERROR: dump failed because assets could not be loaded

    在命令行输入命令,想查看到app的包名,报错,如下: D:\测试\测试\android-sdk_r16-windows\android-sdk-windows\platform-tools>aa ...

  3. PowerDesigner 逆向工程

    原文地址:https://www.cnblogs.com/feilong3540717/archive/2011/11/18/2254040.html PowserDesigner 的打开路径:Fil ...

  4. 吴裕雄 14-MySQL DELETE 语句

    以下是 SQL DELETE 语句从 MySQL 数据表中删除数据的通用语法:DELETE FROM table_name [WHERE Clause]如果没有指定 WHERE 子句,MySQL 表中 ...

  5. MongoDB模糊查询,以及MongoDB模糊查询时带有括号的情况

    模糊查询 记录如下: { "_id" : ObjectId("5c3d486d24aa9a000526367b"), "name" : &q ...

  6. JMeter学习(二十六)逻辑控制器(转载)

    转载自 http://www.cnblogs.com/yangxia-test JMeter中的Logic Controller用于为Test Plan中的节点添加逻辑控制器. JMeter中的Log ...

  7. 二、Adapter 适配器

    适配器:继承适配与委托适配 需求:Banner 可以输出强电流380v.弱电流12v,但是不能被直接使用.通过别的方式,介间的使用banner? 委托类图: 代码清单: 需要隐藏的功能类: publi ...

  8. CSS3 box-shadow实现纸张的曲线投影效果

    一般的投影效果,尤其通过CSS实现的投影效果(无论是CSS3,还是IE滤镜),都是直来直往的.纸张是有卷角的,其投影就是曲面的,如何使用CSS模拟出纸张的卷边曲线投影效果. <div class ...

  9. Error:stray '\243' in program

    c++ 程序出现 Error:stray '\243' in program 错误 错误情况: 错误原因: 有不标准的 ASCII 字符出现,一般是中英文问题,比如 :or ;     , or ,等 ...

  10. 彻底弄懂tf.Variable、tf.get_variable、tf.variable_scope以及tf.name_scope异同

    https://blog.csdn.net/qq_22522663/article/details/78729029 1. tf.Variable与tf.get_variabletensorflow提 ...