什么是Django?

Hello,我是 Alex 007,一个热爱计算机编程和硬件设计的小白,为啥是007呢?因为叫 Alex 的人太多了,再加上每天007的生活,Alex 007就诞生了。

在这第一篇Django文章中,我们来讨论一下“什么是Django?”这个问题,并概述这个网络框架有什么特性和功能,包括一些高级功能,还会展示一些Django应用程序的主要构建模块,但我们并不会在本节中详细介绍,因为此时你还没有相应的DJango开发环境。
在这里插入图片描述

预备知识:对服务器端网站编程一般了解,特别是网站中客户端-服务端交互的机制。
目标:了解Django是什么,它提供了哪些功能,以及Django应用程序的主要构建块。

什么是Django?

Django 是一个高级的Python 网路框架,可以快速开发安全和可维护的网站。它是免费和开源的,有活跃繁荣的社区、丰富的文档、以及很多免费或付费的解决方案。

使用Django开发的应用具有以下优点:

完备
Django遵循“功能完备”的理念,提供给开发人员“开箱即用”的所有功能。你需要的一切,都是一个”产品“的一部分,它们都可以无缝结合在一起,遵循一致性设计原则,并且具有广泛、和最新的文档。
通用

Django 可以用于构建几乎任何类型的网站,从内容管理系统,到社交网络和新闻网站。它可以与任何客户端框架一起工作,并且可以提供几乎任何格式(包括HTML、RSS、JSON、XML等)的内容。

在内部,尽管它为几乎所有可能需要的功能(例如几个流行的资料库,模版引擎等)提供了选择,但是如果需要,它也可以扩展到使用其他组件。

安全

Django 帮助开发人员,通过提供一个被设计为“做正确的事情” 来自动保护网站的框架,来避免许多常见的安全错误。例如,Django 提供了一种安全的方式,来管理用户帐号和密码,避免了常见的错误,比如将session 放在cookie 里这种易受攻击的做法,取而代之的是,cookies 只包含一个密钥,实际数据存储在数据库中,或直接明文存储密码,取而代之的是密码的hash 值。

默认情况下,Django 可以防范许多漏洞,包括SQL 注入,跨站点脚本,跨站点请求伪造,和点击劫持等等。

可扩展
Django 使用基于组件的“无共享” 架构,也就是架构的每一部分独立于其他架构,因此可以根据需要进行替换或更改。在不同部分之间,有明确的分隔,意味着它可以通过在任何级别添加组件,来扩展服务。
可维护
Django代码编写,遵照设计原则和模式,鼓励创建可维护和可重复使用的代码。特别是,它使用了不要重复自己(DRY)原则,所以没有不必要的重复,减少了代码的数量。
可移植
Django 是用Python 编写的,它在许多平台上运行。这意味着,Django应用不受特定的服务器平台的限制,并且可以在许多种类的Linux,Windows 和Mac OS 上运行应用程序。

Django的起源?

Django 最初在2003 年到2005 年间,由负责创建和维护报纸网站的网络团队开发。在创建了许多网站后,团队开始考虑、并重用许多常见的代码和设计模式。这些共同的代码,最终演变成了一个通用的网络开发框架,2005 年7 月,被开源为“Django” 项目。

Django 不断发展壮大,从2008 年9 月的第一个里程碑版本(1.0),到2018年发布的(2.0)版本。每个版本都添加了新功能,和错误修复,从支持新类型的数据库,模版引擎和缓存,到添加“通用” 视图函数和类别,极大程度上减少了开发人员在一些编程任务中必须编写的代码量 。

Django 现在是一个蓬勃发展的合作开源项目,拥有数千个用户和贡献者。虽然它仍然具有反映其起源的一些功能,但Django 已经发展成为,能够开发任何类型的网站的多功能框架。

Django有多受欢迎?

服务器端框架的受欢迎程度没有任何可靠和明确的测量。一个更好的问题是Django是否“足够流行”。它是否继续发展?如果您需要帮助,可以帮您吗?如果您学习Django,有机会获得工作吗?基于使用Django的流行网站数量有多少?为代码库贡献的人数以及提供免费或付费支持的人数有多少?这些都是判断一个框架是否流行的标准。

Django 代码是什么样子?

在传统的数据驱动网站中,Web应用程序会等待来自Web浏览器或其他客户端的HTTP请求。当Django接收到请求时,应用程序根据URL和可能的POST数据或GET数据中的信息确定需要的内容。根据需要,可以从数据库读取或写入信息,或执行满足请求所需的其他任务。然后,该应用程序将返回给Web浏览器或客户端响应。

Django 网络应用程序通常将处理每个步骤的代码分组到单独的文件中:

  • URLs:虽然可以通过单个功能来处理来自每个URL的请求,但是编写单独的视图函数来处理每个资源是更加可维护的。URL控制器用于根据请求URL将HTTP请求重定向到相应的视图,还可以匹配出现在URL中的字符串或数字,并将其作为数据传递给视图函数。
  • View: 视图是一个请求处理函数,它接收HTTP请求并返回HTTP响应。视图通过模型访问满足请求所需的数据,并将响应的格式委托给模板。
  • Models: 模型是定义应用程序数据结构的Python对象,并提供在数据库中增、删、改、查记录的机制。
  • Templates: 模板是定义文件(例如HTML页面)的结构或布局的文本文件,用于表示实际内容的占位符。一个视图可以使用HTML模板,从数据填充它动态地创建一个HTML页面模型。可以使用模板来定义任何类型的文件的结构;它不一定是HTML!

URL控制器(urls.py)

URL控制器通常存储在名为urls.py的文件中。在下面的示例中,urlpatterns定义了特定URL模式和相应视图函数之间的映射列表。如果接收到具有与指定模式匹配的URL(例如r'^$',下面)的HTTP请求,则将调用相关联的视图功能(例如views.index)并传递请求。

urlpatterns = [
    path('admin/', admin.site.urls),
    path('book/<int:id>/', views.book_detail, name='book_detail'),
    path('catalog/', include('catalog.urls')),
    re_path(r'^([0-9]+)/$', views.best),
]

urlpatterns对象是path()和/或re_path()函数的列表。

两种方法的第一个参数,是将要匹配的路由(模式)。 path()方法使用尖括号,来定义将被捕获、并作为命名参数传递给视图函数的URL的部分。 re_path()函数使用灵活的模式匹配方法,称为正则表达式。

第二个参数,是在匹配模式时将调用的另一个函数。注释views.book_detail表示该函数名为book_detail(),可以在名为views的模块中找到(即在名为views.py的文件中)

处理请求(views.py)

视图是Web应用程序的核心,从Web客户端接收HTTP请求并返回HTTP响应。在两者之间,通过Django框架编写视图函数处理资源、访问数据库和渲染模板等。

定义数据模型(models.py)

Django Web应用程序,通过被称为模型的Python对象,来管理和查询数据。模型定义存储数据的结构,包括字段类型以及字段可能的最大值,默认值,选择列表选项,帮助文本,表单的标签文本等。模型的定义与底层数据库无关,一旦您选择了要使用的数据库,您就不需要直接与之交互,而是编写模型结构和其他代码,Django可以处理与数据库通信的所有辛苦的工作。

查询数据(views.py)

Django模型提供了一个,用于搜索数据库的简单查询API。这可以使用不同的标准(例如,精确,不区分大小写,大于等等)来匹配多个字段,并且可以支持复杂语句。

呈现数据(HTML模版)

模板系统允许您使用占位符指定输出文档的结构,以便在生成页面时填充数据。模板通常用于创建HTML,但也可以创建其他类型的文档。Django支持其本机模板系统,和另一个流行的Python库,名为Jinja2。

Django还能做什么?

前面的部分,展示了几乎每个Web应用程序将使用的主要功能:URL映射,视图,模型和模版。Django还提供了其他内容,包括:

  • 表单 : HTML表单用于收集用户数据,以便在服务器上进行处理。Django简化了表单创建,验证和处理。
  • 用户身份验证和权限 : Django包含了一个强大的用户身份验证和权限系统。
  • 缓存 :与提供静态内容相比,动态创建内容需要更强大的计算强度。Django提供灵活的缓存,如无必要,不会重新加载网页。
  • 管理网站 :当你使用Django创建应用时,就已经默认包含了一个Django管理站点。通过它可以十分轻松地创建一个管理页面,使网站管理员能够创建、编辑和查看站点中的数据模型。
  • 序列化数据 : Django可以轻松地将数据序列化,并支持XML或JSON格式。这会有助于使用Django创建一个Web服务,或是创建一个在客户端进行代码处理、和呈现所有数据的网站。

总结

恭喜,您已经完成了Django之旅的第一步!你现在应该已经了解了Django的主要优点,一些关于它的历史,以及Django应用程序的每个主要部分可能是什么样子的。

下一步我们来安装一下Django。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章