Ajax cookie session form组件
- . Cookie是什么
- 保存在浏览器端的键值对
- 为什么要有Cookie?
- 因为HTTP请求是无状态的
- Cookie的原理?
- 服务端可以在返回响应的时候 做手脚
- 在浏览器上写入键值对(Cookie)
- 浏览器发送请求的时候会自动携带该网站保存在我浏览器的键值对(Cookie)
- Django 从请求携带的Cookie中取值:
- request.COOKIES.get("is_login")
- request.get_signed_cookie(key, default=None, salt="xxx")
- Django中设置Cookie:(针对的是响应对象)
- rep = HttpResponse()/render(request, "test.html)/redirect()
- rep.set_signed_cookie(key, value, salt="xxx", max_age=)
- Django中删除Cookie:(注销)
- rep.delete_cookie(key)
- . Session是什么
- Session保存在服务端的键值对
- Session依赖于Cookie
- dsadasdsadsafsjkndf: {"is_login": , "name": "xiaohei", "age":}
- dsaasdaknfgreryywdf: {"is_login": , "name": "xiaobai", "age":}
- wqrqrteknfgzddasqfg: {"is_login": , "name": "xiaohui", "age":}
- 给浏览器写入Cookie:
- sessionid:wqrqrteknfgzddasqfg
- . 从用户发来的请求的Cookie中 根据 sessionid 取值, 取到 wqrqrteknfgzddasqfg
- . 根据特殊字符串找到对应的 Session 数据 --> {"is_login": , "name": "xiaohui", "age":}
- . request.session.get("is_login") --> 从Session取值
- Django中设置Session:
- request.session["is_login"] =
- request.session.set_expiry() # 设置超时时间 (Cookie和Session数据的)
- 在settings.py中设置,每次请求都刷新Session超时时间
- SESSION_SAVE_EVERY_REQUEST = True
- Django中删除Session:
- request.session.flush() 清除Cookie和Session数据
- request.session.clear_expired() 将所有Session失效日期小于当前日期的数据删除
- 今日内容
- AJAX
- . 预备知识 JSON
- . 我们之前已经学过的发请求的方式:
- . 直接在地址栏输入URL回车 GET请求
- . a标签 GET请求
- . form表单 GET/POST请求
- . AJAX GET/POST请求
- . AJAX 特点:
- . 异步
- . 局部刷新浏览器(偷偷发请求)
- . 回顾了一下json数据格式
- . JS对象 和 json数据格式的互相转换
- . Python中数据 和 json数据格式的互相转换
- . AJAX
- . 我们前端往后端发请求的方式:
- . 直接在地址栏输入URL
- . a标签
- . form表单
- . AJAX
- HTTP请求的类型:
- GET
- POST
- . AJAX特点:
- . 异步
- . 局部刷新(偷偷发请求)
- . AJAX缺点:
- 请求零碎,滥用对服务端压力大
- . jQuery封装的AJAX方法:
- 先导入 jquery.js
- $.ajax({
- url: "/test/",
- type: "post",
- data: {"key": "value", "key2":[[, , ], [, , ]]},
- success: function(arg){
- // 请求得到响应的时候,自动执行这个回调函数
- console.log(arg);
- }
- })
- 今日内容
- . form组件的介绍
- 之前web开发的模式,以注册为例:
- . 要有一个注册的页面,页面里面要有form表单 --> 生成HTML代码
- . form表单要能提交数据到后端,后端要做有效性校验 --> 数据有效性校验
- . 要把校验的提示信息展示在页面上 --> 校验信息返回并展示,保存原来填写的内容
- 关于校验:
- . 前端通过JS代码做校验 --> 最好有
- . 后端做校验 --> 必须要有(因为前端的校验可以被跳过)
- . form组件的用法
- . from django import forms
- , 定义一个form类
- class RegForm(forms.Form):
- user = forms.CharField()
- pwd = forms.CharField()
- email = forms.EmailField()
- 生成HTML:
- . 实例化一个form对象, 传递到模板语言中
- . 在目标语言中调用form对象的响应方法和属性
- 三种方式:
- . {{ form_obj.as_p }}
- . 单独写
- {{ form_obj.pwd.label }}
- {{ form_obj.pwd }}
- 做校验:
- . form_obj = RegForm(request.POST)
- . form_obj.is_valid()
- 内置的正则校验器的使用
- mobile = forms.CharField(
- label="手机",
- # 自己定制校验规则
- validators=[
- RegexValidator(r'^[0-9]+$', '手机号必须是数字'),
- RegexValidator(r'^1[3-9][0-9]{9}$', '手机格式有误')
- ],
- widget=widgets.TextInput(attrs={"class": "form-control"}),
- error_messages={
- "required": "该字段不能为空",
- }
- )
- 看源码:
- form_obj.is_valid()都干了什么?
- self._errors = ErrorDict() --> {}
- self.cleaned_data = {}
- self.fields.items()
- 字段名 字段对象
- 如果有错误:
- self._errors["name"] = ""
- 没有报错:
- self.cleaned_data["name"] = value(用户填写的值)
- 注意:
- 钩子函数(hook)的使用
- def clean_xx():
- """具体字段的自定义校验方法"""
- pass
- def clean():
- """全局的自定义校验方法"""
- pass
- errors:
- <ul class="errorlist">
- <li>name
- <ul class="errorlist">
- <li>不符合社会主义核心价值观!</li>
- </ul>
- </li>
- <li>__all__
- <ul class="errorlist nonfield">
- <li>两次密码不一致</li>
- </ul>
- </li>
- </ul>
- 今日内容
- 中间件:http://www.cnblogs.com/liwenzhou/p/8761803.html
- . URL的白名单 url = ["/xx/", "/oo/", "/haha/"]
- . 登陆之后才能访问某些URL 之前使用装饰器
- 中间件的定义:
- wsgi之后 urls.py之前 在全局 操作Django请求和响应的模块!
- 中间件的使用:
- 5个固定的方法
- process_request(self, request)
- 执行顺序:
- 按照注册的顺序(在settings.py里面设置中 从上到下的顺序)
- 何时执行:
- 请求从wsgi拿到之后
- 返回值:
- 返回None,继续执行后续的中间件的process_request方法
- 返回response , 不执行后续的中间件的process_request方法
- process_response
- 执行顺序:
- 按照注册顺序的倒序(在settings.py里面设置中 从下到上的顺序)
- 何时执行:
- 请求有响应的时候
- 返回值:
- 必须返回一个response对象
- process_view(self, request, view_func, view_args, view_kwargs):
- 执行顺序:
- 按照注册的顺序(在settings.py里面设置中 从上到下的顺序)
- 何时执行:
- 在urls.py中找到对应关系之后 在执行真正的视图函数之前
- 返回值:
- 返回None,继续执行后续的中间件的process_view方法
- 返回response,
- process_exception(self, request, exception)
- 执行顺序:
- 按照注册顺序的倒序(在settings.py里面设置中 从下到上的顺序)
- 何时执行:
- 视图函数中抛出异常的时候才执行
- 返回值:
- 返回None,继续执行后续中间件的process_exception
- 返回response,
- process_template_response(self, request, response)
- 执行顺序:
- 按照注册顺序的倒序(在settings.py里面设置中 从下到上的顺序)
- 何时执行:
- 视图函数执行完,在执行视图函数返回的响应对象的render方法之前
- 返回值:
- 返回None,继续执行后续中间件的process_exception
- 返回response,
- Django调用 注册的中间件里面五个方法的顺序:
- . process_request
- urls.py
- . process_view
- view
- . 有异常就执行 process_exception
- . 如果视图函数返回的响应对象有render方法,就执行process_template_response
- . process_response
- Django已经学过的知识点:
- . Urls.py 路由系统:
- 正则
- 分组匹配 --> 位置参数
- 分组命名匹配 --> 关键字参数
- 分级路由
- include
- 给路由起别名
- name="xx"
- 反向解析url
- view
- from django.urls import reverse
- reverse("xx", args=[, , ])
- reverse("xx", kwargs={”k": "v"})
- 自取其辱
- . 视图 views.py
- request
- request.method
- request.GET --> URL里面的参数
- request.POST --> post请求的数据
- request.path_info --> 路径
- request.get_full_path() --> 路径加路径的参数
- response
- 新手必备3件套
- render(request, "xx.html", {“k”: "v", ...})
- HttpResponse("响应")
- redirect("/index/")
- redirect("http://www.luffycity.com")
- from django.http import JsonResponse
- JsonResponse()
- FBV和CBV
- 函数装饰器和方法装饰器的区别
- . 模板
- filter
- 内置的filter方法
- 自定义的filter方法
- tag
- 内置的tag
- 自定义的simpleTag
- 自定义的inclusionTag
- 母版和继承
- {% extends ‘base.html’ %}
- {% block page-main %}
- {% block small %}
- {% endblock small %}
- {% endblock page-main %}
- 组件 {% include nav %}
- 静态文件相关的tag
- 在模板语言里面反向解析url
- {% url 'url的别名' xx %}
- . ORM
- 对应关系
- 类 --> 数据表
- 对象 --> 数据行
- 属性 --> 字段
- Django连接MySQL数据库的步骤:
- . 手动创建库
- . 配置settings.py中数据库的连接信息
- . 修改settings.py同目录下的__init__.py文件,添加两句
- import pymysql
- pymysql.install_as_MySQLdb()
- . 在app下面的models.py中定义类,类一定要继承mdoels.Model
- . 执行两句命令
- . python manage.py makemigrations
- . python manage.py migrate
- 操作数据表
- 操作数据行(增删改查)
- 单表
- 外键
- 多对多
- 一对一
- ORM高级:
- 常用字段和方法
- 必知必会13条
- 神奇的双下划线
- 跨表的正向查询反向查询
- F和Q
- 聚合和分组
- 事务
- 执行原生的SQL语句
- . Cookie和Session,分页
- . AJAX
- $.ajax({
- url: “”,
- type: "post",
- data: {"k1": JSON.stringify([,,])},
- success:function(data){
- }
- })
- . form表单
- . 中间件
Ajax cookie session form组件的更多相关文章
- python全栈开发day72-django之Form组件
一.ajax 1. 复习JSON 1. JSON是什么? 一种数据格式,和语言无关的数据格式. 2. Python里面转换 1. Python对象 --> 字符串 import json 字符串 ...
- Web框架之Django_08 重要组件(form组件、cookie和session组件)
摘要: form组件 cookie组件 session组件 一.form组件 form介绍我们之前在html页面中利用form表单向后端提交数据时候,都需要对用户的输入进行校验,比如校验用户是否输入正 ...
- 探索form组件和cookie,session组件
一. 实现注册功能 后端代码: from django.shortcuts import render,HttpResponse,redirect from app01 import models C ...
- Form组件 cookie和session
django form组件 1.渲染标签 2.校验数据 3.展示信息 第一步需要一个form类 from django import forms class MyForm(forms.Form): n ...
- Django form组件 与 cookie/session
目录 一.form组件 二.cookie.session 返回Django 组件 一.form组件 1.1 以注册功能为例 注册功能 1.渲染前端标签获取用户输入 --> 渲染标签 2.获取用户 ...
- form组件及cookie和session
多对多关系表的三种创建方式 1.全自动创建 优势:不需要你手动创建第三张表 不足:由于第三张表不是你手动创建的,也就意味着,第三张表字段是固定的无法更改 class Book(models.Model ...
- form组件注册ajax登录auth认证及验证码
本项目采用django自带的数据库 项目文件 models.py from django.db import models from django.contrib.auth.models import ...
- 利用Form组件和ajax实现的注册
一.注册相关的知识点 1.Form组件 我们一般写Form的时候都是把它写在views视图里面,那么他和我们的视图函数也不影响,我们可以吧它单另拿出来,在应用下面建一个forms.py的文件来存放 2 ...
- django form组件 cookies,session
django form组件 渲染标签 就是组件里面的字段在前端展示叫做渲染标签 校验数据 用户输入的数据提交给后端组件叫做校验数据 forms组件中定义的字段都是必须传值的(required=Tr ...
随机推荐
- 1.网站js文件获取
++++++++++++++++++++++ pls,input your domain like: http://111.com #coding:utf8 #encoding=utf8 import ...
- ERROR: dump failed because assets could not be loaded
在命令行输入命令,想查看到app的包名,报错,如下: D:\测试\测试\android-sdk_r16-windows\android-sdk-windows\platform-tools>aa ...
- PowerDesigner 逆向工程
原文地址:https://www.cnblogs.com/feilong3540717/archive/2011/11/18/2254040.html PowserDesigner 的打开路径:Fil ...
- 吴裕雄 14-MySQL DELETE 语句
以下是 SQL DELETE 语句从 MySQL 数据表中删除数据的通用语法:DELETE FROM table_name [WHERE Clause]如果没有指定 WHERE 子句,MySQL 表中 ...
- MongoDB模糊查询,以及MongoDB模糊查询时带有括号的情况
模糊查询 记录如下: { "_id" : ObjectId("5c3d486d24aa9a000526367b"), "name" : &q ...
- JMeter学习(二十六)逻辑控制器(转载)
转载自 http://www.cnblogs.com/yangxia-test JMeter中的Logic Controller用于为Test Plan中的节点添加逻辑控制器. JMeter中的Log ...
- 二、Adapter 适配器
适配器:继承适配与委托适配 需求:Banner 可以输出强电流380v.弱电流12v,但是不能被直接使用.通过别的方式,介间的使用banner? 委托类图: 代码清单: 需要隐藏的功能类: publi ...
- CSS3 box-shadow实现纸张的曲线投影效果
一般的投影效果,尤其通过CSS实现的投影效果(无论是CSS3,还是IE滤镜),都是直来直往的.纸张是有卷角的,其投影就是曲面的,如何使用CSS模拟出纸张的卷边曲线投影效果. <div class ...
- Error:stray '\243' in program
c++ 程序出现 Error:stray '\243' in program 错误 错误情况: 错误原因: 有不标准的 ASCII 字符出现,一般是中英文问题,比如 :or ; , or ,等 ...
- 彻底弄懂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提 ...