Django基础知识点

1.对Django的认识

  

   1.Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。
   2.Django内置的ORM跟框架内的其他模块耦合程度高。
    应用程序必须使用Django内置的ORM,否则就不能享受到框架内提供的种种基于其ORM的便利;
    理论上可以切换掉其ORM模块,但这就相当于要把装修完毕的房子拆除重新装修,倒不如一开始就去毛胚房做全新的装修。
   3.Django的卖点是超高的开发效率,其性能扩展有限;采用Django的项目,在流量达到一定规模后,都需要对其进行重构,才能满足性能的要求。
   4.Django适用的是中小型的网站,或者是作为大型网站快速实现产品雏形的工具。
   5.Django模板的设计哲学是彻底的将代码、样式分离; Django从根本上杜绝在模板中进行编码、处理数据的可能。

2.Django 、Flask、Tornado的对比

1.Django走的是大而全的方向,开发效率高。它的MTV框架,自带的ORM,admin后台管理,自带的sqlite数据库和开发测试用的服务器给开发者提高了超高的开发效率
2.Flask是轻量级的框架,自由,灵活,可扩展性很强,核心基于Werkzeug WSGI工具和jinja2模板引擎
3.Tornado走的是少而精的方向,性能优越。它最出名的是异步非阻塞的设计方式
  Tornado的两大核心模块:
      1.iostraem:对非阻塞式的socket进行简单的封装
      2.ioloop:对I/O多路复用的封装,它实现了一个单例

3.什么是WSGI,uwsgi,uWSGI?

  1.WSGI,web服务器网关接口,是一套协议。用于接收用户请求并将请求进行初次封装,然后将请求交给web框架(描述web server和webapplication的通信规则)

  WSGI server负责从客户端接收请求,将request转发给application,将application返回的response返回给客户端;

  2.uwsgi,与WSGI一样是一种通信协议,它是uWSGI服务器的独占协议,用于定义传输信息的类型

  3.uWSGI, 是一个web服务器,实现了WSGI协议,uWSGI协议,http协议,

4.Django请求的生命周期

  1.WSGI,将请求封装之后交给web框架

  2.中间件,对请求对象进行校验或者添加其他数据比如:csrf

  3.路由匹配,根据不同的url匹配不同的视图函数

  4.视图函数,在视图函数中对请求进行处理(可能涉及到ORM,Template渲染)

  5.中间件,对响应的数据进行处理

  6.WSGI,,将响应的内容发送给浏览器

5.FBV和CBV

  FBV:基于函数的视图

  CBV:基于类的视图

  使用CBV的优点:

    1.提高了代码的复用性,可以使用面向对象的技术,比如(多继承)

    2.可以使用不同的函数对不同的HTTP方法进行处理,而不是使用if...else...判断,提高可读性

6.给CBV程序添加装饰器

  1.引入method_decorator模块

  2.直接在类上添加装饰器

  3.直接在方法上添加装饰器

7.简述MVC和MTV

  MVC软件系统分为三个部分:模型(Model)、视图(View)和控制器(Controller)

    Model:负责业务对象和数据库的映射

    View:负责与用户的交互

    Controller:接受用户的输入调用模型和视图完成用户的请求

  MTV软件系统分为三个部分:模型(Model),模板(Templates),视图(View)

    Model:  负责业务对象和数据库的映射

    Template:负责把页面展示给用户

    View:  负责与用户的交互(需要的时候调用Model和Template)

8.Django路由系统中name的作用

  用户反向解析路由,相当于给url起了个别名,只要名字不变,即使路由改变,也能通过此名字找到路由

9.列举Django的内置组件:

  1.Admin是对model中对应的数据表进行增删改查提供的组件

  2.model组件:负责操作数据库

  3.form组件:1.生成HTML代码2.数据有效性校验3校验信息返回并展示

   4.ModelForm组件即用于数据库操作,也可用于用户请求的验证


10.Django中间件的作用和应用场景

  中间件是介于request与response处理之间的一道处理过程,用于在全局范围内改变Django的输入和输出。

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

  eg:

    1.Django项目中默认启用了csrf保护,每次请求时通过CSRF中间件检查请求中是否有正确#token值

     2.当用户在页面上发送请求时,通过自定义的认证中间件,判断用户是否已经登陆,未登陆就去登陆。

11.Django中间件的几个方法 

 1.process_request : 请求进来时,权限认证
 2.process_view : 路由匹配之后,能够得到视图函数
 3.process_exception : 异常时执行
 4.process_template_responseprocess : 模板渲染时执行
 5.process_response : 请求有响应时执行

12.django的request对象是在什么时候创建的( wsgi.py)

  class WSGIHandler(base.BaseHandler):

    request = self.request_class(environ)
  请求走到WSGIHandler类的时候,执行__cell__方法,将environ封装成了request

13.Django重定向的实现

  1.使用HttpResponseRedirect

  2.使用redirect和reverse

  3.状态码:301和302

      301:常用来做域名跳转(旧资源已经移除,跳转到新资源)

      302:常用来做临时跳转(要访问的资源还在,但是没有条件访问)

14 csrf实现机制

  第一步:django第一次响应来自某个客户端的请求时,后端随机产生一个token值,把这个token保存在SESSION状态中;同时,后端把这个token放到cookie中交给前端页面;

  第二步:下次前端需要发起请求(比如发帖)的时候把这个token值加入到请求数据或者头信息中,一起传给后端;Cookies:{csrftoken:xxxxx}

  第三步:后端校验前端请求带过来的token和SESSION里的token是否一致;

15基于django使用ajax发送post请求时,都可以使用哪种方法携带csrf token?

  以键值对的形式放到要传输的数据data中

16.Django本身提供了runserver,为什么不能用来部署?(runserver与uWSGI的区别) 

1.runserver方法是调试 Django 时经常用到的运行方式,它使用Django自带的
WSGI Server 运行,主要在测试和开发中使用,并且 runserver 开启的方式也是单进程 。
2.uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http 等协议。注意uwsgi是一种通信协议,而uWSGI是实现uwsgi协议和WSGI协议的 Web 服务器。
uWSGI具有超快的性能、低内存占用和多app管理等优点,并且搭配着Nginx就是一个生产环境了,能够将用户访问请求与应用 app 隔离开,实现真正的部署 。
相比来讲,支持的并发量更高,方便管理多进程,发挥多核的优势,提升性能。

  

    

  

原文地址:https://www.cnblogs.com/abel01250303/p/9749669.html

时间: 2024-10-14 00:50:42

Django基础知识点的相关文章

Web框架和Django基础

核心知识点 1.web应用类似于一个socket客户端,用来接收请求 2.HTTP:规定了客户端和服务器之间的通信格式. 3.一个HTTP包含两部分,header和body,body是可选,\r\n分隔头部,\r\n\r\n分隔头部和身体. 4.WSGI:定义了用python编写的web服务程序和web应用程序的接口格式. 5.python标准库提供的独立的协议叫wsgiref,django也是使用它作为环境. 6.Django的目录结构(基本的:settings.py urls.py wsgi

Django 基础二

一 模版 一模版的组成 HTML代码+逻辑控制代码 二 逻辑控制代码的组成 1  变量(使用双大括号来引用变量) {{var_name}} 2  标签(tag)的使用(使用大括号和百分比的组合来表示使用tag) {%load staticfiles%} 3 过滤器(filter)的使用 {{ship_date|date:"Fj,Y"}},ship_date变量传给data过滤器,date过滤器通过使用"FJ,Y"这几个参数来格式化日期数据."|"

django基础二

一 模版 一模版的组成 HTML代码+逻辑控制代码 二 逻辑控制代码的组成 1  变量(使用双大括号来引用变量) {{var_name}} 2  标签(tag)的使用(使用大括号和百分比的组合来表示使用tag) {%load staticfiles%} 3 过滤器(filter)的使用 {{ship_date|date:"Fj,Y"}},ship_date变量传给data过滤器,date过滤器通过使用"FJ,Y"这几个参数来格式化日期数据."|"

Python Day19-20(Django基础)

一.Django基础 1.基本配置补充 可以用pycharm一键创建工程和APP 其他常用命令: python manage.py runserver 1.1.1.1:8000 python manage.py startapp appname python manage.py syncdb python manage.py makemigrations python manage.py migrate python manage.py createsuperuser 数据库配置 setting

Django 基础教程

Django 基础教程 这是第一篇 Django 简介 ?  Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站! 你一定可以学会,Django 很简单!本教程一直在更新,从开始写到现在大概写了一年多了,现在也一直在坚持写,每一篇教程都可能随时更新,可以在网站首页看到最近更新的情况. 我阅读学习了全部的 Django英文的官方文档,觉得国内比较好的Django学习资源不多,所以决定写自己的教程.本教程开始写的时候是 Django 的版本是 1.6,

黑马程序员——Java I/O流基础知识点(File类)

File工具 File类就是用俩将文件或者文件夹封装对象,弥补流对象的不足--流只能操作数据,不能操作文件夹的 封装的是路径!!! 构造方法演示 1.可以将已有的未出现的文件或者文件夹封装成对象. File f1=new File("c:\\abc\\a.txt"): File f2=new File("d:\\abc","ab.txt"打印,会打印路径.:目录分隔符,为了更好地跨平台File. File类常见功能 1,创建 createNewF

HTML5基础知识点

今天了解html,下面是我分享的有关html的基础知识点: ①什么是html? html是一种超文本标记语言(超文本标记标签) ②html标签是html中的最基本单位 也是最重要的部分,html标签分为单标签和双标签. 单标签</>   双标签<></> html中的一些常见标签 1,<br/>换行标签    2,<hr/>水平分割线标签   3,<p></p>段落标签     4,<pre></pre&

C# .Net基础知识点解答

C# .Net基础知识点解答 1. 什么是.NET?什么是CLI?什么是CLR?IL是什么?JIT是什么,它是如何工作的?GC是什么,简述一下GC的工作方式? 通俗的讲,.Net是微软开发应用程序的一个平台: CLI是Common Language Infrastructure,是公共语言架构: CLR是Common Language Runtime,即公共语言运行时: IL是.Net编译器产生的中间代码,称为通用中间语言CIL(Common Intermediate Language),CIL

js基础知识点收集

js基础知识点收集 js常用基本类型 function show(x) { console.log(typeof(x)); // undefined console.log(typeof(10)); // number console.log(typeof('abc')); // string console.log(typeof(true)); // boolean console.log(typeof([])); // object console.log(typeof(function (