Django

「Django」利用缓存提高性能

 Django 中内置了一套缓存机制,通过将数据保存在IO性能较高的缓存上,可以提高网站的访问速度。Django 内置的缓存框架提供了以下几种常用的缓存: - 基于`Memcached`缓存; - 使用数据库进行缓存; - 使用文件系统进行缓存; - 使用本地内存进行缓存; ………


「Django」模板结构优化

#### 一、引入模板 可以使用`include`标签来引入其他模板。 1. 指定形式:<br> &emsp;模板名可以使用变量指定,或使用硬编码的字符串。 2. 模板路径:<br> &emsp;使用`include`标签包含其他模板时,其搜索路径与`render()`函数相同,即先搜索当前 a………


「Django」内置模板过滤器

&emsp;在 Django 提供的前端模板语言中,可以通过过滤器对数据进行处理后显示。过滤器本质上就是一个函数,通过管道符`|`来标识,将管道符前的数据传入管道符后指定的过滤器。基本使用形式为: ```css {{ value|filter:argument }} ``` &emsp;以………


「Django」文件上传

#### 一、前端实现 1. 定义一个`form`表单,然后指定属性`enctype="multipart/form-data"`,不然无法上传文件; 2. 在上述表单中填入`input`组件,指定属性`type="file"`。 *以上代码示例如下:* ```html <form ………


「Django」memcached的使用

1. 在`settings.py`中配置好缓存: ```python CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', ………


「Django」上下文处理器

&emsp;上下文处理器用来处理返回给全局模板的数据,可以通过上下文处理器统一给上下文附加数据,这样一来,就无需在每个视图函数中实现重复的逻辑。 ### 一、内置上下文处理器 &emsp;在`settings.TEMPLATES.OPTIONS.context_processors`中,有许多内………


「Django」中间件

&emsp;中间件是一个处理Django请求和响应的框架级别的钩子。它是一个轻量、低级别的插件系统,用于在全局范围内改变Django应用的输入输出。中间件帮助我们在视图函数执行之前和执行之后做一些重复的、针对所有请求与响应进行的操作。其作用在`wsgi`之后`urls.py`之前。 &emsp;由………


「Django」授权系统

&emsp;Django内置了权限功能,权限仅提供一个标记,实现时需自行判断某个用户对象是否拥有某个权限,再在代码层面实现不同的逻辑。权限都是针对表或者说是模型级别的,即限制某用户是否可以对某个表中的数据进行增删改查操作,而不能精确到某条数据。 &emsp;当创建完一个模型后,针对该模型默认有增………


「Django」会话机制

1. cookies:第一次登陆后服务器返回一些数据(cookie)给浏览器,然后浏览器将数据保存在本地,当该用户发送第二次请求的时候,会将上次请求存储的`cookie`数据携带给服务器,服务器通过浏览器携带的数据就能判断用户状态。 2. session:`session`对象存储特定用户会………


「Django」基于类的视图

&emsp;对于视图层,除了可以用函数作为视图(`FBV`),还可以用类作为视图(`CBV`),即在类中定义方法对应http的各种请求方法。使用CBV可以使用类具有的一些特性,如继承、多态等。 - 所有类视图在映射到url时,都需调用视图的`as_view()`类方法。 ```python pat………


「Django」QuerySet详解

&emsp;Django中用于数据查询的`模型.objects`是一个`django.db.models.manager.Manager`对象,而`Manager`类中的方法,全都来自于`QuerySet`类,以下介绍`QuerySet`上的一些常用的API。 &emsp; ### 返回新的Q………


「Django」F表达式与Q表达式

&emsp;Django中的F/Q表达式用于数据库操作。 <br> ### 1.F()表达式 &emsp;Django使用`F()`对象生成一个描述数据库级别操作所需的`sql`语句,使用`F()`对象可以直接引用模型字段的值并执行数据库操作而不用将它们导入到python的内存中,从而高效地………


「Django」数据聚合函数

&emsp;&emsp;对于`ORM`模型可以使用聚合函数,得到数据运算后的结果。`Django`的聚合函数都是通过`aggregate`与`annotate`方法调用的。 - 所有聚合函数都位于`django.db.models`下。 - 聚合函数不能单独执行,需放在可以执行聚合函数的`ag………


「Django」数据查询条件

&emsp;数据查询时数据库操作中的重要技术。查询一般是通过`filter`、`exclude`以及`get`三个方法实现的。而在`ORM`层面,查询条件都是使用`field`+`__`+`condition(查询条件)`的方式来使用的。 &emsp;常用的过滤器: - `filter`:返回………


「Django」数据操作

&emsp;使用`ORM`模型时候,所有的数据库中的操作都隐身为模型的操作。 <br> ### 一、增 &emsp;添加数据到数据库中,首先需要创建一个模型,再在该模型上调用`.save()`方法,Django会自动生成对应sql语句,然后存储对应数据在数据库中。 &emsp; ### ………


「Django」表关系

&emsp; ### 一、外键 Django模型中的外键字段为一个`class ForeignKey(to,on_delete,**options)`对象实例,其中: - `to`:引用的是哪个模型,由于相同app的模型都定义在同一个文件中,故被引用的模型需在定义的模型之前;而若引用的是另一个a………


「Django」验证系统与User模型

&emsp;&emsp;Django拥有一套内置的授权系统,用来处理用户、分组、权限以及基于cookie的会话。Django的授权系统分为验证与授权两个部分,其包括: 1. 用户 2. 权限 3. 分组 4. 可配置的密码哈希系统 5. 可插拔的后台管理系统 &emsp; - 使………


「Django」ModelForm详解

- `ModelForm`中的字段继承自模型,而表单中的字段名需与前端表单组件的`name`对应相同,故在使用`ModelForm`时,**要求前端表单组件名与对应数据模型字段名相同。** <br> ### 一、ModelForm基础 &emsp;&emsp;由于表单中的`Field`类………


「Django」表单验证

&emsp;&emsp;*Django中的表单验证都是针对格式以及数据类型的。* &emsp; 1. 自定义的表单模型的属性都为`forms`类的一种`Field`子类的实例(类似于模型与`models`的关系)。定义表单类中的`Field`为表单验证的第一步,你期望提交上来的数据是什么类型,………


「Django」Django中的表单

#### 一、初识表单 - 表单模型都继承自`forms.FORM`。 - Django中的表单本质上也是一个模型,其可用来: &emsp; 1. 传递给DTL引擎,渲染出前端中的表单; &emsp; 2. 通过表单模型验证所提交的数据是否合法。 >当然,没有表单模型也可以提交数据到后台进行交互………


「Django」ORM常用字段

&emsp;&emsp;Django的ORM模型的使用类的属性来映射表的字段,其中每个属性都是一个模型类的实例。 @[toc] ### 一、常用字段 ##### 1.AutoField &emsp;&emsp;映射到数据库中是`int`类型,自动**自动递增**的特性。如果不指定主键,则模………


「Django」数据库配置

### 一、配置连接数据库 &emsp;&emsp;若要要实现后台与数据库的交互,首先要连接数据库。Django连接数据库,不需要单独创建一个连接对象。只需在`settings.py`文件中做好数据库相关配置即可。示例代码: ```python DATABASES = { 'defaul………


「Django」静态文件加载

&emsp;&emsp;在Django模板中,不能直接加载静态文件,需使用`static`标签来加载静态文件,要使用`static`标签,首先需要使用`{% load static %}`来加载`static`标签。加载静态文件的步骤如下: 1. 确保`django.contrib.static………


「Django」常用模板标签

*TDL使用标签来向模板中嵌入逻辑* >**标签的基本样式:`{{变量}}`、`{%语句%}`** &emsp; &emsp; #### ① if标签 &emsp; *`if`标签相当于Python中的`if`语句,同时也有`elif`与`else`标签相对应 ,**且每个`if`………


「Django」模板层基础

#### 1.模板系统 &emsp;存在多种不同的模板系统,不同的模板系统使用不同的模板语言。DTL 是 Django Template Language 的缩写,也是Django自带的模板语言;同时也可配置Django支持Jinja2等其他模板引擎,但作为Django的内置模板语言,DTL可以………


「Django」URL配置与命名空间

#### 1.路由函数:path(),re_path()函数 &emsp;&emsp;*re_path()与path()的作用都是一样的,不过re_path在写url的时候可以使用正则表达式,功能更加强大。* - 使用 `re_path()` 与正则表达式的时候,推荐的hi用原生字符串;在………


「Django」视图层基础

### 一、初识视图层 - 视图函数用以处理逻辑关系。 - 视图一般都写在 app 的`views.py`中(当然也可写在其他的任何地方,只要能被urls.py正确地导入;且放在app中使得项目保持松耦合)。 - 视图函数的第一个参数永远都是`request`(一个`HttpRequ………