python day100-[day41-45]-3 web-django

django 主干

20200316


模型


静态资源和Ajax请求

  • python 导入包错误
    Python 相对导入attempted relative import beyond top-level package
    参考: https://www.cnblogs.com/linkenpark/p/10909523.html

表单的应用

  • 用户信息
  • 登录
  • 注册

Cookie和Session

  • 用户跟踪
要让客户端记住并在每次请求时带上sessionid又有以下几种做法:

【1】URL重写。所谓URL重写就是在URL中携带sessionid,例如:http://www.example.com/index.html?sessionid=123456,服务器通过获取sessionid参数的值来取到与之对应的session对象。

【2】隐藏域(隐式表单域)。在提交表单的时候,可以通过在表单中设置隐藏域向服务器发送额外的数据。例如:<input type="hidden" name="sessionid" value="123456">。

【3】本地存储。现在的浏览器都支持多种本地存储方案,包括:cookie、localStorage、sessionStorage、IndexedDB等。

报表和日志


中间件的应用

中间件是安插在Web应用请求和响应过程之间的组件,它在整个Web应用中扮演了拦截过滤器的角色,通过中间件可以拦截请求和响应,并对请求和响应进行过滤(简单的说就是执行额外的处理)。
通常,一个中间件组件只专注于完成一件特定的事,例如:Django框架通过SessionMiddleware中间件实现了对session的支持,又通过AuthenticationMiddleware中间件实现了基于session的请求认证。
通过把多个中间件组合在一起,我们可以完成更为复杂的任务,Django框架就是这么做的。
Django中的中间件有两种实现方式:基于类的实现方式和基于函数的实现方式,后者更接近于装饰器的写法。
装饰器实际上是代理模式的应用,将横切关注功能(与正常业务逻辑没有必然联系的功能,例如:身份认证、日志记录、编码转换之类的功能)置于代理中,由代理对象来完成被代理对象的行为并添加额外的功能。
中间件对用户请求和响应进行拦截过滤并增加额外的处理,在这一点上它跟装饰器是完全一致的,所以基于函数的写法来实现中间件就跟装饰器的写法几乎一模一样。
原文地址:https://www.cnblogs.com/damahuhu/p/12505954.html