1.简介

(1)什么是Django?

1.Django是一个web应用框架
2.基于python编写
PS:其他的基于python语言的web框架包括
image.png

(2)Django优点?

1.代码量少,很少的代码就可以完成正式网站的大部分内容
2.强大的数据库功能。可以用Django自带的ORM(Object Relational Mapping,对象关系映射 )完成增删改查。例如下面所示的增、查数据。
image.png image.png
3.自带强大的后台功能。下图所示就是一个简单的后台管理系统登录页面。
image.png

(3)MVC 与 MTV模型

【1】MVC模型

MVC模型,即 Model(模型)+ View(视图)+ Controller(控制器)设计模式,MVC模式使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。MVC模式认为,程序不论简单或复杂,从结构上看,都可以分成三层。
image.png
以计算器为例,解释一下MVC模式,虽然它不一定使用这个模式编写。在这个计算器程序中,外部的那些按钮和最上面的显示条,就是”视图层”,那些需要运算的数字就是”数据层”,执行加减乘除的那些内部运算步骤就是”控制层”。
image.png

以上部分选自阮一峰的网络日志

【2】MTV模型

Django的MTV模式本质上和MVC是一样的,只是定义上有些许不同,Django 的 MTV 分别是指:

  • M 表示模型(Model):编写程序应有的功能,负责业务对象与数据库的映射(ORM)。
  • T 表示模板 (Template):负责如何把页面(html)展示给用户。
  • V 表示视图(View):负责业务逻辑,并在适当时候调用 Model和 Template。

下图很经典的总结了MTV之间是如何进行操作的
image.png

2.第一个项目

(1)创建项目

创建项目方式如下

  1. django-admin.py startproject LearningDjango

生成的LearningDjango项目如下:
image.png
目录说明:
【1】LearningDjango: 项目的容器。注意是里面一层的LearningDjango
【2】manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
【3】LearningDjango/init.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
【4】LearningDjango/asgi.py: 一个 ASGI 兼容的 Web 服务器的入口,以便运行你的项目。
【5】LearningDjango/settings.py: 该 Django 项目的设置/配置。
【6】LearningDjango/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站”目录”。
【7】LearningDjango/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。

(2)启动项目

新建好项目之后,就可以通过命令行的方式来启动项目了
image.png
启动之后,就可以在浏览器中通过输入默认的地址(127.0.0.1)和默认的端口(8000)来进行访问
image.png

(3)视图和 URL 配置

【1】控制web输出内容
在LearningDjango容器中新建一个views.py代码,web输出内容可以由views.py来控制,例如最简单的
image.png
此时还需要在urls.py代码中将views.py中的视图函数hello关联起来
image.png
此时启动项目
image.png
【2】控制url地址
到目前位置,url地址一致是127.0.0.1:8000,实际上这个地址是可以修改的,如下所示
image.png
此时用http://127.0.0.1:8000/hello/这个新地址启动项目
image.png

3.Django模板

(1)模板应用实例

上一章节中使用 django.http.HttpResponse() 来输出 “Hello World!”。该方式将数据与视图混合在一起,不符合 Django的MVC思想。 更好的方式是使用Django模板,模板是一个文本,用于分离文档的表现形式和内容。使用模板包含一下步骤。

【1】新建模版文件

在 LearningDjango 目录底下创建 templates 目录并建立 runoob.html文件,整个结构如下
image.png
runoob.html文件内容如下
image.png

【2】说明模板文件路径

修改LearningDjango/settings.py,修改 TEMPLATES 中的DIRS为 [BASE_DIR+”/templates”,],如下所示:
image.png

【3】修改视图views.py

增加一个新的对象,用于向模板提交数据,代码如下
image.png
可以看到,我们这里使用 render 来替代之前使用的 HttpResponse,render 还使用了一个字典 context 作为参数,context 字典中元素的键值 hello 对应了模板中的变量 {{ hello }}。此外,由于视图中的视图函数变了,因此urls.py也需要改变
image.png
此时用http://127.0.0.1:8000/runroob/这个地址启动项目
image.png
这样我们就完成了使用模板来输出数据,从而实现数据与视图分离。试想,context目前是dict的value目前只是一个str,后面可以用多种方式来对这部分进行注入数据,这样项目的数据就丰富起来了。
image.png

(2)模板标签

通过上面的总结,可以知道模板的语法如下:

  1. view:{"HTML变量名" : "views变量名"
  2. HTML:{{变量名}}

下面介绍其他几种取数据的方式

【1】列表

在views.py中定义一个列表
image.png
在html中可以取整个列表,也可以取列表的部分内容
image.png
启动server,内容如下
image.png
注意这里始终保持html和views的key内容是一致的(都是views)

【2】遍历字典

可以直接用字典 .items 方法,用变量的解包分别获取键和值,定义views.py如下
image.png
定义runoob.html如下
image.png
此时启动server,内容如下
image.png

(3)配置静态文件

一个web应用程序肯定需要js、css、图片等静态文件,因为应用了这些图片、样式、js响应效果后才能看到web的美。读静态文件很简单,只需要在你的工程或者app中建立一个static文件夹,然后在工程的setting.py文件中配置下就可以了。

【1】创建statics目录

该目录下包含css,images,js,plugins等文件夹
image.png

【2】在settings.py中添加配置

添加的配置如下,注意引用路径中的要用配置文件中的别名 static,而不是目录 statics。

image.png

【3】引入静态文件

此时的runoob.html 文件代码如下
image.png
views.py 文件代码如下
image.png
此时启动服务,输出如下
image.png

4.Django模型

(1)ORM

Django 模型使用自带的 ORM(Object Relational Mapping,对象关系映射),用于实现面向对象编程语言里不同类型系统的数据之间的转换,ORM 在业务逻辑层和数据库层之间充当了桥梁的作用。
image.png
ORM 解析过程:
1、ORM 会将 Python 代码转成为 SQL 语句。
2、SQL 语句通过 pymysql 传送到数据库服务端。
3、在数据库中执行 SQL 语句并将结果返回。

ORM和数据库对应关系如下:
image.png

(2)数据库配置

Django 在使用 mysql 数据库之前,需要对数据库进行配置

【1】创建数据库

由于ORM 无法操作到数据库级别,只能操作到数据表,因此需要自己创建一个mysql,

(3)定义模型

Django规定,如果要使用模型,必须要创建一个 app。用以下命令创建一个 TestModel的app

  1. django-admin.py startapp TestModel

按照教程,修改配置。需要说明的是,需要在本地安装mysql服务,并创建数据库才能连接哦。

  1. /usr/local/mysql/bin/mysql -u root -p

settings.py里面的database按照数据库去连接就行
image.png

【1】创建表结构

  1. $ python3 manage.py migrate # 创建表结构

可以看到,创建之前runboob这个database里面是空的,创建之后多了下面这些表
image.png