Hello,我是 Alex 007,一个热爱计算机编程和硬件设计的小白,为啥是007呢?因为叫 Alex 的人太多了,再加上每天007的生活,Alex 007就诞生了。
在这第一篇Django文章中,我们来讨论一下“什么是Django?”这个问题,并概述这个网络框架有什么特性和功能,包括一些高级功能,还会展示一些Django应用程序的主要构建模块,但我们并不会在本节中详细介绍,因为此时你还没有相应的DJango开发环境。
预备知识:对服务器端网站编程一般了解,特别是网站中客户端-服务端交互的机制。
目标:了解Django是什么,它提供了哪些功能,以及Django应用程序的主要构建块。
Django 是一个高级的Python 网路框架,可以快速开发安全和可维护的网站。它是免费和开源的,有活跃繁荣的社区、丰富的文档、以及很多免费或付费的解决方案。
使用Django开发的应用具有以下优点:
Django 可以用于构建几乎任何类型的网站,从内容管理系统,到社交网络和新闻网站。它可以与任何客户端框架一起工作,并且可以提供几乎任何格式(包括HTML、RSS、JSON、XML等)的内容。
在内部,尽管它为几乎所有可能需要的功能(例如几个流行的资料库,模版引擎等)提供了选择,但是如果需要,它也可以扩展到使用其他组件。
Django 帮助开发人员,通过提供一个被设计为“做正确的事情” 来自动保护网站的框架,来避免许多常见的安全错误。例如,Django 提供了一种安全的方式,来管理用户帐号和密码,避免了常见的错误,比如将session 放在cookie 里这种易受攻击的做法,取而代之的是,cookies 只包含一个密钥,实际数据存储在数据库中,或直接明文存储密码,取而代之的是密码的hash 值。
默认情况下,Django 可以防范许多漏洞,包括SQL 注入,跨站点脚本,跨站点请求伪造,和点击劫持等等。
Django 最初在2003 年到2005 年间,由负责创建和维护报纸网站的网络团队开发。在创建了许多网站后,团队开始考虑、并重用许多常见的代码和设计模式。这些共同的代码,最终演变成了一个通用的网络开发框架,2005 年7 月,被开源为“Django” 项目。
Django 不断发展壮大,从2008 年9 月的第一个里程碑版本(1.0),到2018年发布的(2.0)版本。每个版本都添加了新功能,和错误修复,从支持新类型的数据库,模版引擎和缓存,到添加“通用” 视图函数和类别,极大程度上减少了开发人员在一些编程任务中必须编写的代码量 。
Django 现在是一个蓬勃发展的合作开源项目,拥有数千个用户和贡献者。虽然它仍然具有反映其起源的一些功能,但Django 已经发展成为,能够开发任何类型的网站的多功能框架。
服务器端框架的受欢迎程度没有任何可靠和明确的测量。一个更好的问题是Django是否“足够流行”。它是否继续发展?如果您需要帮助,可以帮您吗?如果您学习Django,有机会获得工作吗?基于使用Django的流行网站数量有多少?为代码库贡献的人数以及提供免费或付费支持的人数有多少?这些都是判断一个框架是否流行的标准。
在传统的数据驱动网站中,Web应用程序会等待来自Web浏览器或其他客户端的HTTP请求。当Django接收到请求时,应用程序根据URL和可能的POST
数据或GET
数据中的信息确定需要的内容。根据需要,可以从数据库读取或写入信息,或执行满足请求所需的其他任务。然后,该应用程序将返回给Web浏览器或客户端响应。
Django 网络应用程序通常将处理每个步骤的代码分组到单独的文件中:
URL控制器通常存储在名为urls.py的文件中。在下面的示例中,urlpatterns
定义了特定URL模式和相应视图函数之间的映射列表。如果接收到具有与指定模式匹配的URL(例如r'^$',下面)的HTTP请求,则将调用相关联的视图功能(例如views.index)并传递请求。
urlpatterns = [
path('admin/', admin.site.urls),
path('book//' , 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
的文件中)
视图是Web应用程序的核心,从Web客户端接收HTTP请求并返回HTTP响应。在两者之间,通过Django框架编写视图函数处理资源、访问数据库和渲染模板等。
Django Web应用程序,通过被称为模型的Python对象,来管理和查询数据。模型定义存储数据的结构,包括字段类型以及字段可能的最大值,默认值,选择列表选项,帮助文本,表单的标签文本等。模型的定义与底层数据库无关,一旦您选择了要使用的数据库,您就不需要直接与之交互,而是编写模型结构和其他代码,Django可以处理与数据库通信的所有辛苦的工作。
Django模型提供了一个,用于搜索数据库的简单查询API。这可以使用不同的标准(例如,精确,不区分大小写,大于等等)来匹配多个字段,并且可以支持复杂语句。
模板系统允许您使用占位符指定输出文档的结构,以便在生成页面时填充数据。模板通常用于创建HTML,但也可以创建其他类型的文档。Django支持其本机模板系统,和另一个流行的Python库,名为Jinja2。
前面的部分,展示了几乎每个Web应用程序将使用的主要功能:URL映射,视图,模型和模版。Django还提供了其他内容,包括:
恭喜,您已经完成了Django之旅的第一步!你现在应该已经了解了Django的主要优点,一些关于它的历史,以及Django应用程序的每个主要部分可能是什么样子的。
下一步我们来安装一下Django。