geekdoc-python-zh/docs/pythoncentral/introduction-to-pythons-dja...

49 lines
5.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Python 的 Django 简介
> 原文:<https://www.pythoncentral.io/introduction-to-pythons-django/>
## 什么是 Web 开发
Web 开发是一个宽泛的术语指的是任何涉及到为互联网或内部网创建网站的工作。web 开发项目的最终产品各不相同从由静态网页组成的简单站点到与数据库和用户交互的复杂应用程序。web 开发涉及的任务清单包括 *web 设计**web 内容开发*、*客户端-服务器脚本*、 *web 服务器和网络配置*和*电子商务开发*。通常web 开发意味着构建网站的非设计方面:编码。
大型企业通常有数百人在 IT / web 开发部门工作。例如,一所大学经常需要大量的 web 开发人员、图形设计人员、信息系统架构师来处理其庞大的基于 web 的基础设施,以便学生可以注册课程,教授可以上传考试分数等等。相比之下,较小的公司和个人通常需要一两个 web 开发人员和/或图形设计人员来为他们创建网站。
## 什么是 Web 框架
为了从事 web 开发项目,程序员需要利用众多 web 框架中的一个来编写代码,这些代码专用于作为高效且可伸缩的 web 服务器来管理内容并向最终用户提供服务。
web 框架是一个软件库,旨在帮助任何网站的开发。通过将常见的 web 功能打包到自身中web 框架允许程序员使用开箱即用的代码和基础结构来创建网站,以便他们可以专注于构建面向业务逻辑的网站功能,而不是反复编写处理常见 web 编程任务的代码。例如,大多数 web 框架为数据库访问、模板引擎和 web 会话管理提供了库。如果没有 web 框架,无论何时开始一个新项目,人们都将被迫编写相同的模板代码来处理这些常见任务。
## 姜戈是什么
Django 是一个免费的开源 Python web 框架。在 2005 年首次发布后,它作为 web 开发的`de-factor`框架,越来越受 Python 程序员的欢迎。Django 强调组件的可重用性和可插拔性,这样不同的代码就可以即插即用,形成一个内聚的 web 系统。
Django 宣扬的另一个原则是*干*(不要重复自己)。 *DRY* 旨在减少软件开发中各种重复的信息。例如,我们应该将服务器的静态文件夹的地址赋给应用程序的设置文件中定义的一个常量,这样我们就可以在将来轻松地更改它,而不是在代码的任何地方将服务器的静态文件夹写成一个原始字符串。
除了为常见的 web 任务(如数据库交互和会话管理)提供库之外Django 还提供了一个内置的`admin`站点,允许网站的程序员和管理员通过 GUI 界面轻松地创建、读取、更新和删除数据库记录。
## 由 Django 支持的网站
以下是由 Django 支持的网站的非独家列表:
* [pinterest.com](https://www.pinterest.com/ "Pinterest"):图钉板风格的照片分享网站。
* [bitbucket.org](https://bitbucket.org/ "Bitbucket"):代码分享网站。
* [instagram.com](https://instagram.com/ "Instagram"):照片分享网站。
* addons.mozilla.com:火狐浏览器的插件管理网站。
* disqus.com:社区博客评论托管网站。
如你所见Django 完全有能力托管一些最受欢迎的社交分享网站,如 Pinterest 和 Instagram以及一些最关键的网站如 Bitbucket。由于 Django 推广和维护的最佳软件实践,大公司也开始采用新技术,并慢慢地从 J2EE 转移出去。
## Django 与其他 Python Web 框架的比较
当然Django 并不是唯一的 Python web 框架。其他流行的 Python web 框架有:
* [Flask](https://flask.palletsprojects.com/en/2.0.x/ "Flask") :开源的微型 web 框架,只提供 web 开发的核心库。它不提供数据库抽象、表单验证或任何其他可由第三方组件提供的组件。与 Django 不同Flask 提供的开箱即用组件的数量保持在最低限度,这就是它被称为微型 web 框架的原因。
* 金字塔:一个受 Zope、Pylons 和 Django 启发的开源极简网络框架。它严格遵循 *MVC* (模型-视图-控制器)模式和持久性不可知。与 Django 相比Pyramid 提供了一个额外的 URL 映射机制,称为 URL 遍历,它通过预定义的字典数据结构将 URL 映射到视图。
* Web2py:受 Ruby-on-Rails 启发的开源宏 Web 框架。它遵循 Ruby-on-Rails 关于配置方法的约定,并为各种组件和库提供了合理的缺省值。与 Django 相比web2py 是不同的,因为它为程序员处理几乎所有的事情,同时提供更少的配置选项。
请注意,这些框架之间没有排名。无论你选择哪种 web 框架,最终最重要的问题是由你自己或你的团队来回答:我喜欢使用这个框架吗?一个易于使用的 web 框架能让任何程序员发挥出最高的效率。因此,选择一个你喜欢的框架,用它来创建优雅的网站。
## 摘要
在本文中web 开发和 Django 的前景以鸟瞰图的形式呈现。除了学习 web 开发和 Django 的一般基础知识,我们还将 Django 与其他 Python web 框架进行了比较,得出的结论是,无论你选择哪个框架,都应该选择一个你爱用的框架。