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. java多线程读取、操作List集合

    import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.ArrayUtils;   pub ...

  2. Python基础第一篇-------python的介绍

    一.python的介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本 ...

  3. 由于使用JDBC ResultSet的滚动功能而导致的内存溢出

    前天一去公司,老大说,服务器全挂了! 最后排查了半天,结论是内存溢出! 在WAS的DUMP日志中,看得我头晕眼花,终于找到了罪魁祸首,原来是有同事写代码的时候使用了可滚动的结果集导致内存溢出. 什么是 ...

  4. [翻译] JTCalendar

    JTCalendar JTCalendar is a calendar control for iOS easily customizable. JTCalendar 是一个很容易定制的日历的控件. ...

  5. linux面试总结

    一.填空题:1. 在Linux系统中,以 文件 方式访问设备 .2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统.3. Linux文件系统中每个文件用 i节点 来标识. ...

  6. 面对对象程序设计_task2_1001.A+B Format (20)

    Someting about 1001.A+B Format (20) 问题描述及我所写的代码:click here → My Task 看到这个题目的时候,我的想法很简单,直接判断直接输出,因为给定 ...

  7. SAP CX Upscale Commerce : SAP全新推出的电商云平台

    大家好,我是Andy Chen,是SAP成都研究院年轻的SAP CX Upscale Commerce (后面将会以Upscale简称)开发团队的一名产品经理.CX的全称是Customer Exper ...

  8. 页面中图片以背景图形式展示好还是以img标签形式展示

    img和background-image的异同: img是网页结构层面上的标签,页面中多一个img标签就会多一次http请求,且当我们浏览页面时,img标签作为网页结构的一部分,会在浏览器加载结构的过 ...

  9. 1927. [SDOI2010]星际竞速【费用流】

    Description 10年一度的银河系赛车大赛又要开始了.作为全银河最盛大的活动之一,夺得这个项目的冠军无疑是很多人的 梦想,来自杰森座α星的悠悠也是其中之一.赛车大赛的赛场由N颗行星和M条双向星 ...

  10. HBase学习之路 (十一)HBase的协过滤器

    协处理器—Coprocessor 1. 起源 Hbase 作为列族数据库最经常被人诟病的特性包括:无法轻易建立“二级索引”,难以执 行求和.计数.排序等操作.比如,在旧版本的(<0.92)Hba ...