Django学习

昨天看了一个关于如何使用Django编写一个blog的视频,发现听了一个小时仍然稀里糊涂,一步步照着做完全不懂为什么,虽然最终还没运行成功。。。还是先理解一下Django框架及其设计模式吧。

1、Django是什么

Django是python的web开发框架,遵循MVC的设计模式,但在Django中通常称为MTV(model-template-views)。框架能够帮助你把程序的整体架构搭建好, 而我们所需要做的工作就是填写逻辑, 而框架能够在合适的时候调用你写的逻辑, 而不需要我们自己去调用逻辑, 让Web开发变的更敏捷。

1.1、MVC模式

模型(model):模型持有所有的数据、状态和程序逻辑。模型独立于视图和控制器

视图(view):用来呈现模型。视图通常直接从模型中取得它需要显示的状态与数据。对于相同的信息可以有多个不同的显示形式或视图

控制器(controller):位于视图和模型中间,负责接受用户的输入,将输入进行解析并反馈给模型,通常一个视图具有一个控制器

他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求,其示意图如下所示:

Django学习_第1张图片

1.2、MTV模式

Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django的MTV分别是值:

M 代表模型(Model):负责业务对象和数据库的关系映射(ORM)。

T 代表模板 (Template):负责如何把页面展示给用户(html)。

V 代表视图(View):负责业务逻辑,并在适当时候调用Model和Template。

除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template,MTV的响应模式如下所示:


Django学习_第2张图片

1,Web服务器(中间件)收到一个http请求

2,Django在URLconf里查找对应的视图(View)函数来处理http请求

3,视图函数调用相应的数据模型来存取数据、调用相应的模板向用户展示页面

4,视图函数处理结束后返回一个http的响应给Web服务器

5,Web服务器将响应发送给客户端

1.2.1、ORM对象关系映射

ORM(Object Relational Mapping)是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。

在业务逻辑层和用户界面层中,我们是面向对象的。当对象信息发生变化的时候,我们需要把对象的信息保存在关系数据库中。ORM解决的主要问题是对象关系的映射。域模型和关系模型分别是建立在概念模型的基础上的。域模型是面向对象的,而关系模型是面向关系的。一般情况下,一个持久化类和一个表对应,类的每个实例对应表中的一条记录,类的每个属性对应表的每个字段

1.2.2、MTV模式对应到Django中的文件


Django学习_第3张图片


2、Django怎么用

2.1、创建项目

 pythoon django-admin startproject guest      #创建guest项目

创建完成后,自动生成以下几个文件

a、guest/__init__.py:

一个空的文件,用它来标识一个目录为Python的标准包(如果__init__.py不存在,这个目录就仅仅是一个目录,而不是一个包,它就不能被导入或者包含其它的模块和嵌套包。可以为空)

b、guest/settings.py:

Django项目的配置文件,包括Django模块应用配置,数据库配置,模板配置等

c、guest/urls.py:

Django项目的URL声明,在URL请求和处理该请求的视图函数之间建立一个对应关系(一份由 Django 驱动的网站"目录"。决定127.0.0.1:8000后面可以接哪些内容)

urls.py的工作原理:浏览器发送请求URL,服务器根据请求的URL,在项目所在的所有应用的urls.py配置文件中进行查找,如果能匹配到该URL,就会将该URL交给其对应的视图函数进行处理。负责处理该URL的视图函数,会搜集一些业务数据,然后把这些数据,通过return render(request,'模板文件‘’)

d、guest/wsgi.py:

服务器网关接口,为WSGI兼容的Web服务器服务项目的切入点

e、manage.py:

一个命令行工具,可以让你在使用Django项目时以不同的方式进行交互

2.2、创建应用

进入manage.py所在的目录,运行  python manage.py startapp sign   #创建sign应用

创建完成后生成以下文件:

a、migrations/:

用于记录models中数据的变更

b、__init__.py

c、admin.py:

映射models中的数据到Django自带的admin后台,因此无须自行编写后台管理模块

d、apps.py:

用于应用程序的配置

e、models.py:

创建应用程序数据表模型(对应数据库的相关操作)

f、tests.py:

创建Django测试

g、views.py

控制向前端显示哪些数据

2.2.1、project与app的区别

一个project包含很多个Django app以及对它们的配置

技术上,project的作用是提供配置文件,比方说哪里定义数据库连接信息, 安装的app列表,TEMPLATE_DIRS,等等

一个app是一套Django功能的集合,通常包括模型和视图,按Python的包结构的方式存在(app的一个关键点是它们是很容易移植到其他project和被多个project复用)

即:project的配置构成了一个全局的运行平台,各个APP都运行在这个全局的运行平台上,而APP代表的是一个相对独立的功能模块,所以程序的逻辑都在APP中

2.3、运行项目

Django已经提供了web容器,通过“runserver”命令即可运行

python manage.py runserver (默认为本机的8000端口启动)

或指定IP地址与端口号启动  python manage.py runserver 127.0.0.1: 8001

打开浏览器,若能成功访问 http://127.0.0.1,则说明成功运行

2.4、页面中打印hello Django

a、配置guest/settings.py文件,将sign应用添加到项目中

b、在guest/urls.py文件中,导入sign应用的views,并添加index/路径配置

c、在sign/views.py文件中,添加index函数

d、创建templates文件,并在其中创建一个index.html的网页(很奇怪的是,在这里我将templates文件创建在sign文件下,但是网页实际访问的是Django安装目录下已存在的templates文件下的文件,所以最开始页面报错,提示源文件不存在)

e、运行项目 并打开浏览器访问http://127.0.0.1:8000/index,即可访问index.html页面

Django工作流如下


Django学习_第4张图片




参考:

www.zhihu.com/question/26235428

blog.csdn.net/acs713/article/details/40651457

www.cnblogs.com/wgbs25673578/p/5140482.html

muilpin.blog.163.com/blog/static/16538293620121212481865/

《Python web接口开发与测试》

你可能感兴趣的:(Django学习)