完美主义者的截止日期框架
wemake-django-template
如何?
编程语言有很多,但我一直以来都对Python很感兴趣。我记得第一次听说Python的时候,我就想,除非它很致命,否则为什么要用蛇的名字来命名呢?
Python 是一种解释型、高级的通用编程语言。它的设计理念强调代码的可读性,大量使用空格是其显著特点。Python 常用于构建网站,但通常并非直接使用,而是与 Flask 或 Django 等框架配合使用。本文主要关注 Django。
Django 是一个用 Python 编写的免费开源 Web 应用框架。在深入探讨之前,你需要先了解什么是框架。框架是一系列模块的集合,旨在简化开发过程。这些模块被分组,使你能够基于现有源代码创建应用程序,而不是从零开始。为了便于理解,我们可以把框架比作一块布料,比如你买了一条裤子,然后进行一些修改,例如在口袋里缝上安卡拉布料,做一些破洞处理,再喷上一些颜料,所有这些都是为了打造符合你个人喜好的定制版本。
关于 Django,一个有趣的冷知识是它以一位著名吉他手、时代传奇人物 Django Reinhardt 的名字命名。使用 Django 时,您可以随意欣赏任何类型的音乐,包括炫耀的资本。成为一名 Django 开发者,就如同成为一名艺术家。
在架构方面,我们有两种设计:MVT(模型-视图-模板)和 MVC(模型-视图-控制器)。它们的主要区别在于,在 MVC 中,你需要编写所有控件相关的代码,而在 MVT 中,控制器部分由框架本身负责处理。
Django 使用 MVT 模式。让我们深入了解一下 MVT 的含义。MVT 将代码分为三个部分:模型 (Model)、视图 (View) 和模板 (Template)。模型包含负责处理数据和数据库的系统;视图负责设计模式,即决定要显示哪些数据;模板指定输出结构。可以使用占位符在模板中填充数据。它定义了信息的呈现方式。例如,我们可以使用通用列表视图来显示数据库中的一组记录。MVT 将客户端和服务器代码分离,从而降低了耦合度,这也是 Django 被称为松耦合框架的原因。耦合度是指模块之间的相互依赖程度。
为了更好地说明这一点,不妨想想这个例子:假设你需要展示衣橱里几条牛仔裤中的一条,这些数据存储在一个名为“牛仔裤”的表中。在MVC架构中,你需要编写代码从数据库中获取牛仔裤列表,然后编写表示层(HTML和CSS),映射URL(统一资源分配器),最后将其发送给用户。而在Django中,你只需要告诉框架要向用户显示哪些数据(“牛仔裤”表)。它会根据这些数据创建一个视图并将其发送给用户。这就是为什么我们说Django是为那些有时间限制的完美主义者量身打造的Web框架。
项目是指一个完整的应用程序,而应用程序则是项目中的一个模块,负责处理特定的需求。例如,如果整个项目是一个电商网站,它将包含多个应用程序,例如零售网站应用程序、买家网站应用程序和发货网站应用程序。一个项目中可以包含多个应用程序;每个应用程序可能都有一些需要响应的 URL。我们不会将所有应用程序的 URL 都注册到一个 urls.py 文件中,而是让每个应用程序维护自己的 urls.py 记录。在项目的 urls.py 文件中,我们使用 include 函数来引用每个应用程序的 urls.py 数据。
Django 的另一个优点是它完全自动化地创建了模型的管理界面。该界面允许我们查看和修改已注册应用和模型的数据库中的数据。要将数据库表与管理界面配合使用,首先需要在 admin.py 文件中注册模型。
此外,该框架的响应流程也相当简洁。Django 服务器接收到请求后,会在项目定义的 URL 模式中查找匹配的 URL。如果没有找到匹配的 URL,则返回 404 状态码。如果找到匹配的 URL,则会执行与该 URL 关联的视图文件中的相应代码,以构建并发送响应。
在我们的语境中,迁移指的是一个 Python 文件,其中包含我们对模型所做的更改,以便将它们转换为数据库管理系统 (DBMS) 中的数据库模式。因此,我们无需手动在 DBMS shell 中编写查询来更改数据库模式,只需更改模型即可。然后,我们可以使用 Django 根据这些模型更改生成迁移,并运行这些迁移来更改数据库模式。它与英语中“迁移”一词的定义(即“移动”)非常接近。
ORM(对象关系映射器)允许我们使用模型类的对象与数据库交互,而不是通过编写原始 SQL(结构化查询语言)查询并将查询返回的数据转换为 Python 对象来与数据库交互。ORM 会根据我们使用的数据库(例如 SQLite)将这些更改转换为 SQL 查询。
中间件是 Django 请求/响应处理流程中的一个层。每个中间件负责对请求和响应执行一些特定的功能,例如,AuthenticationMiddleware 使用会话将用户与请求关联起来。
DRF(Django REST Framework)是一个 Django 应用框架,它允许我们快速创建 RESTful(表述性状态转移)API(应用程序编程接口)。DRF 提供了一种在接口和数据库之间传输信息的方式,它将用户界面和数据存储分离。此外,它还通过发送 .json 文件与用户和数据库进行通信,如图所示。
此外,DRF 因其结构简洁而备受推崇,只需几行代码即可完成所有操作。更重要的是,它可以集成到任何平台,从而避免代码重复,并有助于快速升级。下图展示了三行代码即可实现的功能。
Django 中的 Sessions 框架会将用户的任意信息存储在服务器端的数据库中。这是因为 HTTP 是一种无状态协议,这意味着它不会在后续请求之间存储信息。
Cookie 是一小段信息,存储在客户端浏览器中。它会将用户数据永久保存或在指定时间后删除。Cookie 具有过期日期和时间,过期后会被删除。Django 使用包含唯一会话 ID 的 Cookie 来识别每个浏览器及其与网站的关联会话。
使用 Django 的优势在于它拥有更强大的内容分发网络 (CDN) 和内容管理功能。像 Netflix 和 Amazon Prime 这样的公司都在使用它,因为服务器靠近客户端,可以更快地提供内容,从而提高客户满意度。
它具有可扩展性,并且设计上能够应对任何类型的硬件扩展。它不仅安全性高(数据传输采用 GET 方法),而且密码和所有重要信息都会使用长密钥自动加密,即使在 Django 数据库中,我们也无法看到密码。
尽管我们有很多优点,但也存在一些缺点。它是单体架构,这意味着它包含一组特定的文件和预定义变量,在创建任何项目之前,您需要先了解这些内容。对于小型项目来说,它的功能需要大量的代码,因此会占用服务器的处理时间和资源,这对于带宽要求很低的网站来说会造成一些问题。
优点远大于缺点。在你的下一个项目中,不妨尝试一下 Django。
文章来源:https://dev.to/veldakiara/the-framework-for-perfectionists-with-deadlines-4n6c