在Django 作为 Python 中众多 WEB 框架中最受欢迎之一,自有它的独道之处,它使用的 MTV 模式虽简单灵活,但功能丰富。
请看下图,图中的 1-9 部分就构成了一个完整的框架,针对图示,我们有必要对 Django 框架中的重要概念进行初步的了解:
[点击查看源网页]
1、视图(views.py):即MTV模式中的V,视图是一个 Python 函数,它负责接收、处理数据和模板,向用户展示需要显示的内容。通常来说,一个视图最简单的描述就是:获取数据、处理数据、返回数据。
由上图可以看到,任何一个结果都是通过视图返回的,由发出请求、查找视图、视图处理、接收结果最短的路径是【1-2-9】,也就是说Django框架的运行可以没有模型(Model)、没有模板(Template),但必须有一个视图和用于查找视图的路由。由简单到复杂的框架如下:
- 包括【1-2-9】部分:假设我们有个任务,只需要在屏幕上显示字符串 “Hello World” ,那么整个流程只需要发出请求 -> 通过路由查找视图 -> 视图函数返回“Hello World”字符串
- 包括【1-2-【3-4-5-6】-9】部分:假设我们的任务需要从数据库里检索数据后再显示在屏幕上,那么就需要通过模型(Model)与数据库交互获取数据,再通过视图函数返回给请求者,上述【3-4-5-6】就是模型处理部分。
- 包括【1-2-【3-4-5-6】-【7-8】-9】部分:假设我们从数据库检索到数据后,想通过某种我们自定义的表格、图形等方式显示在屏幕上,那么就需要一个模板(Template)来规划我们展示数据的方式,再通过视图函数对模板进行渲染后返回给请求者,上述【7-8】就是模板处理部分。
视图函数的执行结果只可能有两种:返回一个包含请求页面元素的 HttpResponse 对象,或者是抛出 Http404 这类异常。至于执行过程中的其它的动作则由你决定。
2、路由(urls.py):通俗理解就是我们查找视图函数的路径。当我们输入网址发出请求时,Django 会按照我们设置的路径去查找视图,找到后就按视图函数返回结果。路径存储在项目目录下的 urls.py 文件中,可以在该文件中为项目中的每个应用程序进行路径分流,后续将详细学习。
路由可包括项目中路由和应用程序中的路由。
3、模型(models.py):即MTV模式中的M,就是通过 Python 代码的方式来定义数据库的记录和字段、描述数据库结构、同关系型数据库交互,这种强大的【数据-模型】语句描述你的数据模型后,通过运行 Django 命令行实用程序以自动创建数据库表。
如前所述,即使无需数据库也可以使用 Django框架。
4、模板(templates.py):即MTV模式中的T,就是展示数据的方式,例如可以使用表格方式、图形方式展示数据。当我们对返回的数据有更高的视觉要求时,可以使用模板。视图被调用后,通过渲染模板对数据进行展示。模板可以利用html、css、专门的语法等代码编写。
如前所述,即使无需模板也可以使用 Django框架。
5、表单(forms):在网页中主要负责数据采集,并将数据提交到服务器。类似在网页界面输入用户名和密码并提交数据的控件就是表单,用于模板中,可以与用户进行交互。
表单属于HTML控件的一种,采用HTML语法写在模板内。
6、后台管理(admin.py):用于网站的后台管理,在创建了超级用户后并进行简单配置后,就可以使用后台的管理界面,后续章节将详细介绍。
7、项目配置(settings.py):用于设置整个项目的配置信息,包括数据库配置、语言配置、应用程序配置等,它在创建项目后存储在项目的根目录下。
在使用Django框架制作网站之前,提前的准备工作应包括:
安装 Python,请到 Python 官网(https://www.python.org/downloads/)自行下载安装,推荐使用 Anaconda 程序安装,几乎包括大部分常用的库(https://www.anaconda.com/distribution/)
安装 Django,目前最高版本是 Django 3.0.3,参考如下语句:
pip install django
安装 Python IDE,我使用的是微软的 VS Code 编辑器(https://code.visualstudio.com/),当然你也可以选择诸如 PyCharm 、jupyter notebook 等其他 IDE 来学习。
安装数据库,如果使用 SQLite 数据库,则无需安装。后面的学习示例使用的是 MySQL 数据库,请到官网(https://dev.mysql.com/downloads/mysql/)自行下载安装。
为了便于测试,示例的数据来源于官方文档,即投票应用程序来进行学习,最终它将由两部分组成:
让人们查看和投票的公共站点。
让你能添加、修改和删除投票的管理站点