【五】Admin后台管理

发布时间 2023-07-21 15:47:26作者: Chimengmeng

【一】Admin管理后台功能搭建

【路由接口】

这是官方自带的管理员入口

  • admin/
  • admin.site.urls

【引言】

  • Django为我们提供了一个可视化的后台管理的可视化界面

    • 方便我们对我们的模型表进行管理
  • 如果我们想使用admin后台管理我们的模型表

    • 我们需要先将模型表注册到admin视图内

【一】注册管理员账户

python manage.py createsuperuser
  • 输入用户名
  • 邮箱可以选择不输入
  • 输入密码即可

【二】在管理员文件中注册模型表

  • 即在项目下指定app下的Admin.py文件中注册
from django.contrib import admin

# Register your models here.
from book import models

# 注册模型表
admin.site.register(models.UserInfo)
admin.site.register(models.Blog)
admin.site.register(models.Category)
admin.site.register(models.CategoryTag)
admin.site.register(models.Article)
admin.site.register(models.ArticleToTag)
admin.site.register(models.UpAndDown)
admin.site.register(models.Comment)

【三】后台页面展示

【1】启动项目

【2】访问指定路由

http://127.0.0.1:8000/admin/

  • 输入用户名和密码

【小问题解决】

如果显示的用户表名为英文

  • 可以在模型表中添加指定功能
class Meta:
    verbose_name = "用户表"
  • 当我们访问管理后台时,会发现表明变成了我们自定义的表名,但是表名后面带了一个 s
    • 用户表s

用户表表名s

  • 在以上的基础上添加指定语句
class Meta:
    verbose_name = "用户表"
    verbose_name_plural = verbose_name
  • 可以将两句合成一句
class Meta:
    verbose_name_plural = "用户表"
  • 这时,我们访问管理后台的表名就和我们定义的是一样的了

【四】管理模型表原理

【1】访问指定表

http://127.0.0.1:8000/admin/app名/表名/

http://127.0.0.1:8000/admin/book/userinfo/

  • 可以根据指定的字段进行管理

【2】增加信息

http://127.0.0.1:8000/admin/app名/表名/add/

http://127.0.0.1:8000/admin/book/userinfo/add/

  • 可以根据指定字段添加信息

【3】更改信息

http://127.0.0.1:8000/admin/app名/表名/id/change/

http://127.0.0.1:8000/admin/book/userinfo/9/change/

【4】删除信息

http://127.0.0.1:8000/admin/app名/表名/id/delete/

http://127.0.0.1:8000/admin/book/userinfo/9/delete/

【五】管理模型表

【1】先从文章表入手

【2】添加个人站点表(关联博客)

  • 添加两个站点
dream
技多不压身
dream.css
chimeng
三打白骨精
chimeng.css

【3】添加标签(关联分类)

  • 添加三个标签
dream的分类一
dream

dream的分类一
dream

dream的分类一
dream
chimeng的分类一
chimeng

chimeng的分类一
chimeng

chimeng的分类一
chimeng

【4】创建文章(文章表)

(1)第一条

必知必会:写给前端同学常用的linux命令大全

必知必会:写给前端同学常用的linux命令大全

1. 文件与目录操作:
- ls:列出当前目录下的文件和目录。
- cd:切换到指定目录。
- pwd:显示当前所处的目录路径。
- mkdir:创建一个新目录。
- touch:创建一个新文件或修改现有文件的时间戳。
- cp:复制文件或目录。
- mv:移动文件或目录,或者修改文件/目录的名称。
- rm:删除文件或目录。
- cat:查看文件内容。

2. 文件内容查找与编辑:
- grep:在文件中搜索指定的文本模式。
- find:根据条件搜索文件。
- less/more:分页查看文件内容。
- head:显示文件的前几行内容。
- tail:显示文件的后几行内容。
- nano/vim:文本编辑器,用于编辑文件。
  
3. 压缩和解压缩:
- tar:打包和解包文件。
- gzip:压缩文件。
- gunzip:解压缩文件。
- zip:创建压缩文件。
- unzip:解压缩文件。

4. 远程连接与文件传输:
- ssh:远程登录到另一台计算机。
- scp:在本地系统和远程计算机之间安全地复制文件。
- sftp:使用 SSH 协议进行文件传输。

5. 网络管理:
- ping:测试网络连接。
- ifconfig/ip addr:查看和配置网络接口信息。
- netstat:显示网络连接、路由表等信息。
- curl/wget:从网络上获取文件或网页内容。

6. 系统管理:
- ps:显示当前运行的进程状态。
- top/htop:实时查看系统资源使用情况。
- free:显示内存使用情况。
- df:显示磁盘空间使用情况。
- kill:终止运行中的进程。
- sudo:以超级用户身份执行命令。
  • 绑定给
    • dream
    • dream的分类一

(2)第二条

如何实现文字搜图

首先需要知道根据文本搜索图片具体是什么问题,这里可以有两个层面。第一个则是图片中包含的文本内容,这个可以用OCR识别提取出来。第二个则是深层次的对图片描述的文本,比如红色的狗、跑步的猪、骑猪的人。这些都是对图片内容的描述,相比之下第二种要复杂得多。

实现文字搜图的过程通常包括以下步骤:

1. 文字提取:首先,需要从待搜索的图片中提取出文字信息。这可以通过使用光学字符识别(OCR)技术实现。OCR 技术能够将图像中的文字转换为可编辑和搜索的文本。

2. 文字索引:提取出的文本信息需要进行索引,以便能够快速地进行搜索。常用的方法是使用倒排索引(Inverted Index)的数据结构将文本与图像进行关联。倒排索引记录了每个单词(或字符)与包含该单词的图像之间的映射关系。

3. 搜索匹配:当用户输入搜索关键词时,系统会根据关键词在倒排索引中找到匹配的图像,并返回给用户。可以使用字符串匹配算法(如 Boyer-Moore 算法、KMP 算法等)来快速匹配搜索关键词。

4. 相似度计算:除了精确匹配关键词外,还可以通过计算图像之间的相似度来进行模糊搜索。常用的相似度计算方法包括余弦相似度、汉明距离、编辑距离等。

需要注意的是,实现文字搜图需要综合运用多种技术,包括图像处理、OCR 技术、索引技术和相似度计算等。此外,还需要考虑数据存储和高效的搜索算法以及用户界面等方面的设计。对于实际的应用场景,可能需要根据具体需求进行技术选择和定制开发。

绑定给

  • dream
  • dream的分类一

(3)第三条

软件开发架构类别

软件开发架构是指在软件设计和开发过程中,用于组织和管理软件系统的基本结构。

### 常见的软件开发架构类别包括:

#### 分层架构(Layered Architecture):

- 将软件系统划分为多个相互独立的层,每个层都有特定的功能和责任。

#### 客户端-服务器架构(Client-Server Architecture):

- 将软件系统划分为客户端和服务器两个部分,客户端向服务器请求服务并接收响应。

#### 管道和过滤器架构(Pipe and Filter Architecture):

- 将软件系统划分为一系列处理组件(过滤器),每个组件按照特定顺序进行数据处理。

#### MVC架构(Model-View-Controller Architecture):

- 将软件系统划分为模型、视图和控制器三个核心组件,实现数据、界面和业务逻辑的分离。

#### 微服务架构(Microservices Architecture):

- 将软件系统划分为一系列独立的小型服务,每个服务都专注于完成特定的任务。

绑定给

  • dream
  • dream的分类二

(4)第四条

osi七层及各自功能

OSI(Open Systems Interconnection)是一个国际标准化的网络通信模型,共分为七层。

### 物理层(Physical Layer):

- 负责传输比特流,管理物理设备和传输介质。

### 数据链路层(Data Link Layer):

- 通过物理层提供的传输服务,将数据转换为帧,控制与物理层的通信。

### 网络层(Network Layer):

- 负责在网络中传输数据包,并进行路径选择和拆分、封装等操作。

### 传输层(Transport Layer):

- 提供端到端的可靠数据传输,确保数据正确无误地到达目标。

### 会话层(Session Layer):

- 负责建立、管理和结束会话,提供应用之间的数据交换服务。

### 表示层(Presentation Layer):

- 处理数据的表示形式,对数据进行加密、解密、压缩和格式转换等操作。

### 应用层(Application Layer):

- 为用户提供服务,实现各种应用程序的功能。

绑定给

  • dream
  • dream的分类三

(5)第五条

谈谈你对tcp三次握手和四次挥手的理解

TCP(Transmission Control Protocol)是一种面向连接的可靠传输协议,它使用三次握手和四次挥手来建立和终止连接。

### 三次握手(Three-way Handshake)

是建立TCP连接的过程,包括以下步骤:

1) 客户端发送一个SYN(同步)包给服务器,请求建立连接。
2) 服务器收到SYN包后,回复一个SYN+ACK(同步+确认)包给客户端,表示接受连接请求。
3) 客户端收到服务器的SYN+ACK包后,再发送一个ACK(确认)包给服务器,表示连接建立成功。

### 四次挥手(Four-way Handshake)

是终止TCP连接的过程,包括以下步骤:

1) 客户端发送一个FIN(结束)包给服务器,表示不再发送数据。
2) 服务器收到FIN包后,发送一个ACK包给客户端,确认收到FIN包。
3) 服务器准备好关闭连接后,发送一个FIN包给客户端,表示不再发送数据。
4) 客户端收到服务器的FIN包后,发送一个ACK包给服务器,确认收到FIN包,完成连接的关闭。

> 通过三次握手,客户端和服务器建立起可靠的连接;
>
> 而通过四次挥手,双方协商关闭连接并释放相关资源。
>
> 这样可以确保数据能够可靠地传输并正确关闭连接。

绑定给

  • chimeng
  • chimeng的分类一

(6)第六条

描述粘包现象

粘包现象是在计算机通信中常见的问题  它指的是数据在传输过程中由于一些原因被组合在一起形成连续的数据块,导致接收方无法正确解析和处理这些数据。

### 粘包现象的主要原因有以下几种:

- 发送端数据发送速度过快:
  - 发送端在短时间内连续发送多个数据包,但接收端可能无法及时处理这些数据。当接收方在解析一个数据包时,下一个数据包已经到达,导致数据粘合在一起形成粘包现象。

- 接收端读取数据不及时:
  - 接收端处理数据的速度没有跟上发送端的速度,导致发送的多个数据包在接收端未能及时处理,从而形成粘包现象。

- TCP协议的滑动窗口机制:
  - TCP协议使用滑动窗口机制来提高数据传输的效率,但这也可能导致粘包现象。

  - 当发送端的滑动窗口尺寸大于接收端的缓冲区大小时,会将多个数据包发送到接收端,从而形成粘包。

- 网络拥塞:
  - 当网络中存在拥塞时,数据包在传输过程中可能会出现延迟,导致数据粘在一起形成粘包现象。

- 数据包大小限制:
  - 某些网络设备或协议对数据包大小有限制,当发送端发送的数据包超过了这个限制,就会发生粘包现象。

绑定给

  • chimeng
  • chimeng的分类二

(7)第七条

写出解决粘包现象的思路

粘包现象是计算机通信中常见的问题,可以通过增加数据包边界标识、使用定长数据包、引入消息头/消息尾、使用应用层协议以及控制发送和接收速度等方法来解决。

- 增加数据包边界标识:
  - 在发送端和接收端添加特定的数据包边界标识,以便接收端可以准确地将不同的数据包分开处理。

- 使用定长数据包:
  - 发送端将数据按照固定长度进行分包,并在接收端按照相同长度进行解析,从而避免数据粘合在一起。

- 引入消息头/消息尾:
  - 在数据包的头部或尾部添加消息头/消息尾,其中包含数据包的长度信息,接收端通过读取消息头/消息尾来准确定位每个数据包的边界。

- 使用应用层协议:
  - 采用应用层协议可以处理粘包问题,例如在数据包中添加指定字段表示数据包长度,或者使用特定的分隔符将不同的数据包分开。

- 控制发送速度和接收速度:
  - 通过控制发送端和接收端的数据处理速度,使得两者能够相互匹配,避免数据粘包现象的发生。

绑定给

  • chimeng
  • chimeng的分类三

【6】个人站点关联标签(文章标签表)

dream的标签一
dream

【7】文章分类表

dream的分类一
dream
...

【8】文章绑定标签(文章关联标签)

选择指定个人的文章
关联指定个人的标签