Django
2021-08-28 08:13:59 0 举报
AI智能生成
Python前端框架Django详细汇总,一看就懂!
作者其他创作
大纲/内容
Django中间件
什么是中间件?
中间件是一个插件系统,嵌入在Django的Request和Response之间执行,可以对输入和输出的内容作出修改,它是处理所有请求与响应的通用架构组件
Django中间件是修改Django request或者response对象的构子,可以理解为是介于HttpRequest与HttpResponse处理之间的一道处理过程
Django中间件的作用
修改请求
即传送到view中的HttpRequest对象
修改响应
即View返回的HttpResponse对象
自定义中间件
Django cache缓存系统
缓存技术的作用
缓存是指保存一些计算开销较大的数据,可以是某个网页,也可以是网页的一部分,或者仅仅只是格式化的数据,合理运用缓存技术可以减少数据库访问次数,不用每次都到数据库中读取数据,从而优化了网页的访问速度。
缓存系统真正的提高了 Web 站点执行效率,常被用来缓存用户经常访问的页面,比如网站的首页等,用户再次访问的时候直接返回已经缓存的内容,从而减小了 Web 服务器的压力
Django缓存系统
Django提供了一个健壮的缓存系统
可以保存动态页面,这样就不必把相同的请求进行重新计算
Django提供了不同级别的缓存粒度
可以缓存特定视图的输出,或者只缓存某些特定的片段,比如网站自动跳出的咨询栏等,或者也可以缓存整个站点
Django支持多种缓存类型
可以根据实际选择哪一种缓存类型,例如Memcached、数据库、文件系统等
其中Memcached是Django支持最快,最高效的分布式高效缓存系统,它是一种完全基于内存的缓存服务器,它被Facebook、维基百科等网站使用,从而减少数据库的访问并显著提高网站性能
Django开源项目入门
项目一
GitHub地址
网站演示
在github后面加个1s就可以在VScode下浏览代码
项目二
GitHub地址
项目三
子主题
简介
是使用Python语言开发的Web应用框架
Web框架概念:它是一套组件,提供通用的设计模式,能够最大程度的降低开发Web站点的难度,减少重复性工作,节省时间,让开发者可以将有限的精力投入到关键的开发环节中
Django框架遵循MVC设计模式,并且有一个专属名词:MVT
MVC设计模式
MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分,三层之间紧密相连,但又相互独立,每一层的修改不会影响其他层,每一层都提供了各自独立的接口供其他层调用,MVC设计模式降低了代码间的耦合性(关联性),增加了代码的可重用性,这就是MVC设计模式
模型(M)
代表数据存储层,负责数据存储层即负责业务对象与数据库的映射(ORM),是对数据表的定义和数据的增删改查
视图(V)
代表视图层,是系统前段显示部分,它负责显示什么以及如何显示,即为与用户的图线交互界面
控制器(C)
代表控制层,负责转发请求,对请求进行处理,负责从View层输入的指令来检索Model层的数据,并在该层编写代码产生结果并输出
MVT设计模式
MVT模式借鉴了经典的MVC软件架构模式,在MVT模式中,用View取代了Controller层的位置,用Template层取代了View层的位置,除开,三层外,还需要一个URL分发器,它的作用就是将一个个URL的页面请求发给不同的View处理,View在调用相应的Model、Template
模型(M)
代表数据存储层,处理所有数据相关的业务,和数据库进行交互,并提供数据的增删改查
视图(V)
代表业务逻辑层,处理具体的业务逻辑,它的作用是联通Model层和Template层
模板(T)
代表模板层,负责页面的显示
MVC和MVT两种设计模式比较
MVT是MVC的一种细化,将原来MVC中的V层拿出来分离,视图的显示与如何显示交给Template层,而View层更专注于实现业务逻辑,而Django是有Controller层的,只不过它由框架本身实现,并不关心它,Django更关注M、V、T
教程
C语言中文网
菜鸟教程
W3Cschool
Django官网
Django框架特点
相对于Python的其他Web框架(实现快速建站 Flask 和支持高并发处理的 Tornado),Django的功能是最完善的,Django定义了服务发布、路由映射、模板编程、数据处理的一整套功能,这也意味着Django模块之间的紧密耦合
ORM模块
ORM是什么?
ORM(Object Realtional Mapping)即对象关系映射,它是一种基于关系型数据库的程序技术,ORM允许使用类和对象对数据库进行操作,由于ORM的存在,为操作不同的数据库提供了统一的方法,ORM适配了多种常用的关系型数据库,例如:PostgreSQL、MySQL、Oracle、SQLite3等
具体
ORM把类映射成数据库中的表,把类的一个实例对象映射成数据库中的数据行,把类的属性映射成表中的字段。通过对象的操作对应到数据库表的操作,实现对象到SQL,SQL到对象的转换过程
ORM与数据库的关系映射图
ORM 的增删改查称为 CURD 操作
ORM的优势和不足
优势
使用该模块仅需要面向对象编程,不需要面向数据库编写代码,对数据库的操作转换为对类属性和方法的操作,不需要编写各种数据库的SQL语句
实现数据模型和数据库的解绑,屏蔽了不同数据库操作上的差异化,不在关注数据库内部的操作细节,通过简单更改配置就可以实现数据库的更换无需更改代码
缺点
相比直接用SQL语句操作数据库会有性能损失,因为在映射的过程中ORM需要与SQL之间进行转换,根据对象的操作转换为SQL语句,根据查询结果转换成对象,所以在映射的过程中存在性能损失
但是 ORM 的不足带来的这点性能损失是微不足道的,ORM 的优势还是非常突出的。因为这种对象模型和关系型数据库之间的转换方式,给开发者带来了极大的便捷,所以其它语言开发的框架,对 ORM 也有很多应用,比如 Hibernate、IBATIS、EclipseLink 等
auth用户认认证模块
auth能干什么
auth模块能够快速实现用户模块的基本功能,例如:用户的注册、登录、退出或者注销,到用户的浏览、订阅等
auth模块功能总结
实现并维护用户与用户组的增加、删除、更改功能
实现并维护用户权限和用户组权限的增加、删除、更改功能
实现可以自定义用户权限和用户组权限功能
提供权限验证及一些常用的方法
Admin后台管理工具
后台管理系统
对数据表的存储做专门的管理
Django视图
视图层
一个视图函数,简称视图,是一个简单的Python函数,它接受Web请求(request)并返回Web响应(HttpResponse)。响应可以是一个HTML页面、一个404错误页面、重定向页面、XML文档、或者一张照片等,无论视图本身包含什么逻辑,都要返回响应,代码写在哪里都可以,只要在Python目录下,一般放在项目的views.py文件中
视图层中两个重要的对象
请求对象:HttpRequest对象(简称request对象)
几种常用的request属性
GET
数据类型是QueryDict,一个类似于字典的对象,包含HTTP GET的所有参数。有相同的键,就把所有的值放到对应的列表里面
POST
数据类型是QueryDict,一个类似于字典的对象,包含HTTP POST的所有参数。常用于form表单,form表单里面的标签name属性对应参数的键,value属性对应参数的值
body
数据类型是二进制字节流,是原生请求体里的参数内容,在HTTP中用于POST,因为GET没有请求体,在HTTP中不常用,而在处理非HTTP形式的报文时候非常有用,例如:二进制图片、XML、Json等。
path
获取URL路径部分,数据类型是字符串
响应对象:HttpResponse对象
响应对象的主要三种形式
HttpResponse()
返回文本,参数为字符串字符串中写文内容。如果参数含有字符串里含有html标签,可以渲染
render()
返回文本,第一个参数为request,第二个参数为字符串(页面名称),第三个参数为字典(可选参数向页面传递参数:键为页面参数,值为views参数名)
redirect()
重定向,跳转新的页面。参数为字符串,字符串填写页面路径。一般用于form表单提交后,跳转到新的页面
视图函数的执行过程
Django接收到请求后,首先创建一个带有请求信息的HttpRequest对象,将HttpRequest的对象request作为第一个参数传递给视图函数,视图函数接收到参数后向下执行,然后选择加载对应的视图,最后返回HttpResponse对象给浏览器
Django模板系统
要实现视图函数和HTML代码的解耦
大概实现过程
当创建好一个Django项目后,在项目的同级目录下创建一个名为templates文件夹,对它进行简单配置后,该文件夹会被Django自动识别。
URL
什么是URL?
URL即为统一资源定位符,它用来表示互联网上某个资源的地址,互联网上的每一个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它,URL已经被万维网联盟编制为互联网标准RFC1738
URL语法格式详解
例子
protocol (协议)
protocol是指网络传输协议,以下是常用到的几个协议
http,通过 HTTP 协议访问该资源,格式 http://;
https,通过安全的 HTTPS 协议访问该资源, 格式 https://;
file,资源是本地计算机上的文件,格式 file:///
ftp,通过 FTP访问资源,格式 FTP://
hostname(主机名)
是指存放资源的服务器的域名、主机名或 IP 地址。有时,在主机名前也可以包含连接到服务器所需的用户名和密码(格式:username:password@hostname)
port(端口号
port 是一个可选的整数,它的取值范围 是 0-65535。如果 port 被省略时就使用默认端口,各种传输协议都有默认的端口号,如 http 的默认端口为 80,https 的端口是 443
path(路由地址)
由零个或多个/符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。路由地址决定了服务端如何处理这个请求
query (查询)
从?开始到#为止,它们之间的部分就是参数,又称搜索部分或者查询字符串。这个部分允许有多个参数,参数与参数之间用&作为分隔符。本例的参数部分为id=234&number=1314
fragment(信息片断)
它用于指定网络资源中的片断,例如一个网页中有多个名词解释,那么可使用 fragment 直接对它们定位。例子中的信息片段是#后的 name。#代表网页中的一个位置而 name 就是这个位置的标志符号,当浏览器读取到上述 URL 后,浏览器将直接展示该位置
其他
有些特殊的符号无法直接在 URL 中使用,那么这时候需要用该符号对应的 ASCII 编码值,格式为%code,code 代表特殊符号的编码值
Django路由
首先用户请求会到达相应的视图函数,视图函数通过路由系统找到相应的访问资源。路由简单的来说就是根据用户请求的 URL 链接来判断对应的处理程序,并返回处理结果,也就是 URL 与 Django 的视图建立映射关系
Django 路由在 urls.py 配置,urls.py 中的每一条配置对应相应的处理方法。
Django 不同版本 urls.py 配置有点不一样:
Django 不同版本 urls.py 配置有点不一样:
路由系统使用方法简洁且容易理解,这大大降低了如何配置 URL 的难度
0 条评论
下一页