什么是 Django?

Django 是一种可用于快速高效地开发 Web 应用程序的软件。大多数 Web 应用程序都具有数种常用功能,例如身份验证、从数据库中检索信息和 Cookie 管理。开发人员必须将类似功能编程到他们编写的每个 Web 应用程序中。Django 将不同的函数分组到大量可重复使用的模块(称为 Web 应用程序框架)中来简化任务。开发人员使用 Django Web 框架更高效地组织和编写代码,并显著缩短 Web 开发时间。

为什么 Web 开发人员选择 Django?

市场上有几种 Web 框架。Django 用 Python 语言编写,是众多 Python Web 框架之一。但是,由于以下原因,开发人员通常更喜欢 Django Web 框架。

开发速度

Django 框架组织良好,易于安装和学习,因此您可以在几个小时内开始使用。Django 设计人员创建的框架可以在代码中快速实施任何 Web 架构。该框架支持快速开发和干净实用的设计。您只需几行就可以编写代码,因为 Django 为几个常见的 Web 开发任务提供了一个现成的结构,例如:

  • 用户身份验证
  • 内容管理
  • 站点地图
  • RSS 源

经济高效

Django 是免费的开源 Python 项目,拥有一个活跃的社区,负责审查和维护软件。一个名为 Django 软件基金会的非营利组织负责促进和支持 Django 的使用和维护。该组织定期举办聚会、集会和社区活动,鼓励其他开发人员审查 Django 项目并做出改进。让 Django 最终成为了一个高质量、功能丰富的 Web 框架,可以免费使用。

广受欢迎

数以千计的开源项目和知名网站都在使用 Django,例如:

  • Instagram
  • Mozilla Firefox
  • Pinterest
  • National Geographic

该框架因为广受欢迎,所以不断发展,拥有了强大的支持基础设施。您在使用 Django 时可能会面临种种开发上的难题,有大量个人和公司可为您提供免费和付费的支持。

Django 如何工作?

任何 Web 应用程序都由两部分组成:服务器代码和客户端代码。客户或网站访客会使用浏览器。当客户在浏览器中键入 URL 时,会向运行 Web 应用程序的 Web 服务器计算机发送请求。服务器会使用数据库处理请求,并将信息以响应的形式发送回客户端。客户端代码将信息以网页的形式显示给访客。

Django 使用模型-视图-模板 (MVT) 架构来管理该请求和响应系统的代码。

型号

Django 模型可以充当数据库和服务器代码之间的接口。模型是您数据的唯一确定信息来源。这些数据模型包含与数据库交互所需的基本字段和操作。Django 模型从而将数据库表转换为 Python 代码中的类别或对象。这称为对象关系映射。

每个模型通常都会映射到单个数据库表,并具有表示数据库字段的属性。例如,如果您的网站包含员工详细信息,则可以表示为:

  • 包含员工姓名和地址字段的员工表。
  • 一个名为 Class Employee 的员工模型,具有 Name 和 Address 两个属性或模型字段。

查看

Django 视图使用模型处理请求。您可以为网站访客可以向您的网站提出的每种类型的请求编写一个视图函数。视图函数可以将请求作为输入并返回响应,响应可以是错误代码、图像、文件或任何类型的数据。

Django 有一个 URL 映射器或 URL 分派器,可以将视图函数映射到 URL。您必须创建一个 URL 映射器文件,在其中编写 URL 模式,如下所示。

urlpatterns = [

path('employee/name', views.employee_name),

path('employee/<int:year>/', views.year_archive),

]

例如,如果您希望您的网站访客查看特定年份中所有员工的列表,那么您可以设置 URL 路径 employee/year number,并编写相应的 Django 视图函数 year_archive。当网站访客在其浏览器中键入“yourwebsitename.com/employee/2020”时,将执行以下步骤:

  1. 请求将发送到您的 Web 应用程序。
  2. Django Web 框架从 URL 映射器中获取年份号和视图函数名。
  3. 框架运行 2020 年的视图函数 year_archive
  4. Year_archive 可以使用员工模型从数据库中获取 2020 年的所有员工数据。
  5. Django Web 框架将数据以响应的形式发回。

模板

Django 模板管理浏览器中的网页显示。由于大多数网页都是超文本标记语言 (HTML),因此可以用类似 HTML 的样式编写 Django 模板代码。模板文件包含的特定组件有:

  • 最终 HTML 输出的静态部分,如图像、按钮和标题。
  • 特殊语法,描述如何插入动态内容或数据,随每个请求而变化。

以下组件组成了 Django 模板系统。

模板语言

模板语言是用于编写 HTML 模板代码的编程语言。Django 支持自身的 Django 模板语言和一种常用的替代语言 Jinja2。

模板引擎

模板引擎用于处理模板文件并创建最终的 HTML 输出。该输出包括了此输出中的响应数据。

例如,当您的网站访客请求员工信息时,您的 Django 模板将用您的网站标题、包含所有员工姓名和地址的表格以及显示“下一步”的按钮填充网站访客浏览的网页。

在 Django 中还可以使用其他哪些模块?

模型-视图-模板 (MVT) 架构定义了各种应用程序的基本结构,但 Django 还有其他几个模块来增强您的网站。下面提供了一些示例。

表单

大多数网站需要表单注册和付款等等,或向网站访客收集信息。Django 提供了许多工具和库,可用于管理网站表单。Django 可以简化和自动化表单处理,并且比您自己编写代码更安全。

Django 提供了三种表单处理方式:

  1. 通过准备和重构要显示的数据进行表单创建
  2. 通过在客户端检查 HTML 表单进行表单验证
  3. 通过接收提交的数据进行表单处理

用户身份验证

现代网站必须对用户进行身份验证和授权。身份验证用于验证用户的身份,授权决定了经过身份验证的用户在站点上可以执行哪些操作。Django 可以管理各种用途的身份验证。

  • 用户账户
  • 允许用户执行特定网站任务的权限和“是否”标志
  • 具有类似权限的多个用户账户的组
  • 基于 Cookie 的用户会话

还提供了一个可配置的密码哈希系统和工具来限制表单和视图中的内容。

站点管理

Django 管理站点可以直接为您的站点提供管理页面。站点管理员可以使用该页面创建、编辑或查看站点上的数据模型。

Django 坚持己见吗?

如果 Web 框架对 Web 开发人员强制实施流程,我们非正式地称之为“坚持己见”。框架有一种观点或正确的方式,开发人员必须以这种方式完成特定任务。例如,坚持己见的框架通常会保留与特定行业相关的应用程序任务的详细文档来支持特定行业的高效开发。

另一方面,非坚持己见的框架对如何将不同的模型-视图-模板 (MVT) 组件集成在一起的限制较少。虽然该类型的框架更灵活,但因为不同的开发人员可以对同一任务使用不同的方法,会致使代码组织更复杂。

Django 较为坚持己见。Django 提供了广泛的组件,其中包括关于如何处理许多不同类型的 Web 开发任务的文档。开发人员可以使用 Django 的解耦架构从一系列选项中进行选择,甚至增加了对所需新选项的支持。

什么是 Django 安全?

网络犯罪分子通常以网络应用程序为目标,以访问用户登录、财务数据和其他敏感信息。Django Web 框架可提供多种功能来保护您的 Web 应用程序和用户。通过遵循 Django 最佳实践,您可以避免许多常见的安全错误。下面提供了一些示例。

跨站脚本保护

如果网络犯罪分子将恶意代码插入网站用户的浏览器,就会发生跨站脚本攻击 (XSS)。网络犯罪分子可以通过多种方式欺骗您的 Web 应用程序来攻击您的用户,例如:

  • 将恶意脚本存储在数据库中,以便服务器在其下次响应时无意中发送恶意代码。
  • 诱使用户单击链接导致用户浏览器中运行恶意客户端代码(而不是您的代码)。

例如,Django 模板可能有 {{name}},显示用户在其配置文件的 name 字段中输入的文本。网络犯罪分子可能会劫持会话并将名称更改为 <script>alert('hello')</script> 之类的代码。模板更改为 {{<script>alert('hello')</script>}}

现在用户的浏览器中会运行这段代码,因此用户的屏幕上会弹出文本消息“Hello”。虽然这个例子过于简单,但您可以看到网络犯罪分子如何插入复杂的脚本来控制用户的计算机。

Django 通过自动转义或忽略用户输入中表示恶意代码的 <> 等特定字符来保护您免受此类攻击。

未经授权访问保护

黑客窃取用户凭证并向您的 Web 应用程序发送未经授权的请求时,就会发生跨站请求伪造 (CSRF) 攻击。Django 在 Django CSRF 模块中内置了针对大多数类型的 CSRF 攻击的保护。其工作原理是在每个用户第一次登录时向用户发送一个密钥值。 

新的客户端请求包括密钥值,以证明客户端与声称的相符。由于只有授权用户的浏览器知道密钥值,Django 可以自动拒绝来自假装是用户的其他机器的请求。您必须激活 Django CSRF 模块设置才能使其工作。

SQL 注入保护

网络犯罪分子使用 SQL 注入,通过 POST 等 HTTP 请求将 SQL 代码插入数据库。恶意代码可能会窃取或删除您的真实数据。Django 从设计本身解决了这个问题。用户发送的数据(称为参数)与数据库查询保持分离,直到到达模型层。Django 模型可以在创建查询代码时转义危险字符。

社区支持带来的保护

Django 的保护功能超越了其内置的安全功能。因为 Django 开源,所以许多有经验的开发人员会使用和审查 Django 模块。对该模块彻底的测试提高了 Django 代码的可靠性,并防止了意外的安全漏洞遗留下来。

什么是 Django 可扩展性?

在网站开发中,可扩展性是指网站同时处理多个客户端请求的能力。Django 项目具有很强的可扩展性,可以处理数千个请求。您可以通过以下方式扩展 Django 应用程序。

硬件

Django 团队设计了 Web 框架,以高效地使用系统中的硬件。Django 采用无共享架构,将数据库层(模型)和应用程序层(视图)等组件分离开。您可以在任何层面添加硬件,而不会影响系统的其余部分。您可以在系统中添加更多的数据库服务器或应用程序服务器,Django 将有效地使用这些资源来处理多个访客。

缓存

缓存是将一些网页数据保存在客户端服务器或中间服务器上的过程,这样您的 Django 应用程序可以更快地处理请求,从而提高规模。Django 提供了一个具有不同缓存级别的强大缓存系统,:

  1. 您可以缓存整个网站。
  2. 您可以缓存特定视图函数输出。
  3. 您可以缓存创建起来非常耗时的特定内容。

Django 项目也可以很好地与第三方缓存配合使用。您可以编写代码来提示这些缓存,并告诉 Django 要缓存应用程序的哪个部分。

AWS 如何帮助支持您的 Django Web 应用程序?

AWS Elastic Beanstalk 是一项用户友好的服务,用于在熟悉的服务器(例如 Apache、Nginx、Passenger 和 IIS)上部署和扩展使用 Django、Python、Java、.NET、PHP、Node.js、Ruby、Go 和 Docker 等技术开发的 Web 应用程序和服务。

Elastic Beanstalk 通过以下方式支持 Django 开发人员:

  • 您上传 Django 代码后,Elastic Beanstalk 会自动处理部署。
  • Elastic Beanstalk 负责配置和操作基础设施,并帮您管理应用程序堆栈(平台),因此您无需花时间,也不用发展专业技能。
  • Elastic Beanstalk 可以根据应用程序的具体需求,通过使用可调整的 Auto Scaling 设置来自动扩展和缩减应用程序。

立即创建一个免费的 AWS 账户,开始部署 Django 应用程序到 Elastic Beanstalk

AWS Django 后续步骤

查看其他与产品相关的资源
查看云端开发者工具服务的免费优惠 
注册免费账户

立即享受 AWS 免费套餐。 

注册 
开始在控制台中构建

在 AWS 管理控制台中开始构建。

登录