1、django请求生命周期

  • wsgi, 他就是socket服务端,用于接收用户请求并将请求进行初次封装,然后将请求交给web框架

    (Flask、Django)
  • 中间件,帮助我们对请求进行校验或在请求对象中添加其他相关数据,例如:csrf、request.session
  • 路由匹配 根据浏览器发送的不同url去匹配不同的视图函数
  • 视图函数,在视图函数中进行业务逻辑的处理,可能涉及到:orm、templates => 渲染
  • 中间件,对响应的数据进行处理。
  • wsgi,将响应的内容发送给浏览器

2 WSGI / uwsgi / uWSGI

uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。

要注意 WSGI / uwsgi / uWSGI 这三个概念的区分。

  1. WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范。
  2. uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。
  3. 而uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。
  4. uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型(type of information),每一个uwsgi packet前4byte为传输信息类型描述,它与WSGI相比是两样东西

3、中间件

中间件一般做认证或批量请求处理,django中的中间件,其实是一个类,在请求和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法,

如请求过来 执行process_request, view,process_response方法

说的直白一点中间件是帮助我们在视图函数执行之前和执行之后都可以做一些额外的操作,

使用中间件做过什么?

  • 自定义

    • 登录认证:不再需要在每个函数中添加装饰器
    • 权限:当用户登录时候获取当前用户所有权限并放入session,然后再次访问其他页

      面,获取当前url并在session中

      进行匹配。如果没有匹配成功,则在中间件返回“无权访问”
  • 跨域,
    • jsonp,动态创建一个script标签。
    • cors,设置响应头

      应用:本地开始前后端分离的时使用。

4、Django、Tornado、Flask各自的优势

1.Django:Django无socket,django的目的是简便,快速开发,并遵循MVC设计,多个组件可以很方便的以“插件”形式服务于整个框架,django有许多功能强大的第三方插件。django具有很强的可扩展性。
2.Tornado:它是非阻塞式服务器,而且速度相当快,得力于其 非阻塞的方式和对epoll的运用,Future对象,
缺点:没有session,需要自定制
3.Flask:是一个微型的web框架,配合SQLALchemy来使用,jinja2模板, werkzeug接口

5、django怎么弄并发的

 nginx+uwsig为django提供高并发,nginx的并发能力超过,单台并发能力过完,在纯静态的web服务中更是突出其优越的地方,由于底层使用epoll异步IO模型进行处理。

6、什么是ORM?

Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间做一个映射

ORM优缺点:

优点:摆脱复杂的SQL操作,适应快速开发,让数据结果变得简单,数据库迁移成本更低

缺点:性能较差,不适用于大型应用,复杂的SQL操作还需要通过SQL语句实现

7、cookie及session

cookie:是保留在客户端上面的一组键值对,cookie不是很安全,别人可以分析存放在本地的cookie

session:是保存在服务器上面的一组键值对,依赖与cookie,安全指数比cookie高

8、FBV和CBV本质是一样的,没有优劣之分,可根据不同的需求来使用

视图

  - FBV 基于函数的视图
l - 函数
- CBV 基于类的视图
l - view

9、跨域问题,同源策略?

跨域是指从一个域名的网页去请求另一个域名的资源。浏览器出于安全的考虑,不允许不同源

的请求;

      因为浏览器收到同源策略的限制,当前域名的js只能读取同域下的窗口属性。

      同源策略:不同的域名, 不同端口, 不同的协议不允许共享资源,保障浏览器安全。

处理方法:

1、jsonp 跨域

创建一个回调函数,在远程服务上调用这个函数并且将JSON 数据形式作为参数传递,完成回调。

可以通过javascript动态的创建script标签,这样我们就可以灵活调用远程服务了

jsonp是json用来跨域的一个东西。原理是通过script标签的跨域特性来绕过同源策略。

2、CORS 跨域

CORS 是在 es5 之后提出的跨域方案. 只需要在服务器配置一个跨域响应头接口

  1. 允许你的域名来获取我的数据

     response['Access-Control-Allow-Origin'] = "*"

2.允许你携带Content-Type请求头

         response['Access-Control-Allow-Headers'] = "Content-Type"

3.允许你发送DELETE,PUT

           response['Access-Control-Allow-Methods'] = "DELETE,PUT"

3. 与jsonp相比的优点:

1、 JSONP只能实现GET请求,而CORS支持所有类型的HTTP请求。

                  2、 使用CORS,开发者可以使用普通的XMLHttpRequest发起请求和获得数据,比起JSONP

有更好的错误处理。

                  3、 JSONP主要被老的浏览器支持,它们往往不支持CORS,而绝大多数现代浏览器都已经

支持了CORS。

10、http常见状态码

常见的状态码:

  • 200            请求成功  OK
  • 302            重定向,新的URL会在response 中的Location中返回,浏览器将会自动使用新

    的URL发出新的Request
  • 304            代表上次的文档已经被缓存了, 还可以继续使用
  • 400            客户端请求与语法错误,不能被服务器所理解
  • 403            服务器收到请求,但是拒绝提供服务,比如没有找到cookie
  • 404            请求资源不存在(输错了URL)
  • 500            服务器发生了不可预期的错误
  • 503            服务器当前不能处理客户端的请求,一段时间后可能恢复正常

11、HTTP请求方法

根据HTTP标准,HTTP请求可以使用多种请求方法。

HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

序号 方法 描述
1 GET 请求指定的页面信息,并返回实体主体。
2 HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
5 DELETE 请求服务器删除指定的页面。
6 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
7 OPTIONS 允许客户端查看服务器的性能。
8 TRACE 回显服务器收到的请求,主要用于测试或诊断。

4 django篇的更多相关文章

  1. Python学习笔记(Django篇)——3、创建第一个数据库模型

    Django里面集成了SQLite的数据库,对于初期研究来说,可以用这个学习.   第一步,创建数据库就涉及到建表等一系列的工作,在此之前,要先在cmd执行一个命令: python manage.py ...

  2. Python学习笔记(Django篇)——4、继续完善视图层

    在demo/views.py中添加这些代码: def detail(request, question_id): returnHttpResponse("You're looking at ...

  3. Python学习笔记(Django篇)——2、创建第一个django应用

    在helloworld工程的基础上,我们准备创建第一个基于web的django应用,把这个应用名字命名为demo   首先,是如何创建这个应用包,当然第一选择我们可以进入到cmd中,执行如下命令 py ...

  4. Python学习笔记(Django篇)——1、环境搭建篇(如何在Pycharm中配置Python和Django)

      1.准备好以下东东,并且按照先后顺序进行安装: Python 3.6 (64-bit) Django-1.11.tar.gz pycharm-community-2016.3.2.exe 安装好了 ...

  5. From delete library to run の 初见Django篇

    一.虚拟环境简介 1.什么是虚拟环境? 虚拟环境是用于依赖项管理和项目隔离的python工具,允许python的第三方库安装在本地特定项目的隔离目录中,而不是全局安装. 2.虚拟环境的组成 ① 安装了 ...

  6. Web框架之Django篇

    1.创建Project 命令: django-admin startproject mysite 2.配置 (1)模板配置 (2)静态文件配置 (3)csrf隐藏 3.路由关系 一个url对应一个函数 ...

  7. Django线上部署实战教程之Nginx+Gunicorn+Django篇

    #############################################   推荐 nginx supervisor gunicorn  配置简单,运维方便. Nginx (engi ...

  8. Django资源

    官网地址:https://www.djangoproject.com/ 最新发布版本是:1.11.7 官网提供不同版本的文档:1.7.1.8.1.9.1.10.1.11.2.0.dev 安装不同的版本 ...

  9. [原创]Python/Django使用富文本编辑器XHeditor上传本地图片

    前言 为了在Django框架下使用Xheditor上传图片,居然折腾了我一个晚上.期间也遇到种种问题,网上相关资料极少.现在把经验分享给大家. 正文 xheditor篇 1.下载http://xhed ...

随机推荐

  1. iOS7中UIView的animateKeyframesWithDuration方法讲解

    iOS7中UIView的animateKeyframesWithDuration方法讲解 在iOS7中,给UIView添加了一个方法用来直接使用关键帧动画而不用借助CoreAnimation来实现,那 ...

  2. python-面向过程编程

    面向过程: 核心是过程.过程指的是解决问题的步骤,设计一条流水线,机械式的思维方式. 优点:复杂的问题流程化,进而简单化

  3. Linux xargs命令详解

    find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部 xargs要处理的文件如果不是在结尾,需要加上 -i这个参数 xargs常见命令参数 args:xarg ...

  4. (转)ParallaxOcclusionMapping( POM ) DX9(转)

    http://blog.csdn.net/xujiezhige/article/details/7326606

  5. Hadoop HBase概念学习系列之HBase里的存储数据流程(二十三)

    这个,很简单,但凡是略懂大数据的,就很清楚,不多说,直接上图.

  6. idea插件 总结 自认用比较不错的插件的总结

    1.Background Image Plus 设置你喜欢的图片,提升你编码逼格!还可以设置以轮播图的形式变换图片 还可以设置图片的透明度等现实的方式 2.CodeGlance 类似SublimeTe ...

  7. 使用 FRP 反向代理实现 Windows 远程连接

    互联网普及率的日渐攀升与 IPv4 资源的持续减少,现在大部分家庭宽带都不会分配公网 IP ,这使一些网络应用的实现多了些困难,像个人的 NAS 和一些智能家居设备.对于分配公网 IP ,各地运营商的 ...

  8. 查询包含指定字段的所有表名的SQL脚本

    select [name] from sysobjects where [id] in (select [id] from syscolumns where [name]='ReceiptNbr') ...

  9. 51 nod 1682 中位数计数

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1682 1682 中位数计数 基准时间限制:1 秒 空间限制: ...

  10. HBase学习之路 (七)HBase 原理

    系统架构 错误图解 这张图是有一个错误点:应该是每一个 RegionServer 就只有一个 HLog,而不是一个 Region 有一个 HLog. 正确图解 从HBase的架构图上可以看出,HBas ...