wjx-2005-07-01  

Django

一、MTV和MVC的区别

首先介绍Django的设计模式,也就是MTV,在这之前我们先了解MVC模式。

1、MVC设计模式

MVC是Model-View-Controller的缩写

  • Model代表数据存储层,是对数据表的定义和对数据的增删改查;
  • View代表视图层,是系统前段显示部分,它负责显示什么和如何进行显示;
  • Controller代表控制层,负责根据从View层输入的指令来检索Model层的数据,并在该层编写代码产生结果并输出。

MVC设计模式的请求与响应过程描述如下:

  • 用户通过浏览器向服务器发起request请求,Controller层接受请求后,同时向Model层和View层发送指令;
  • Model层根据指令与数据库交互并选择相应业务数据,然后将数据发送给Controller层;
  • View层接收到Controller的指令后,加载用户请求的页面,并将此页面发送给Controller层
  • Controller层接收到Model层和View层的数据后,将它们组织成响应格式发送给浏览器,浏览器通过解析后把页面展示出来

MVC的3层之间紧密相连,但又相互独立,每一层的修改都不会影响其他层,每一层都提供了各自独立的接口供其他层调用,MVC的设计模式降低了代码之间的关联性,增加了模块的可重用性,这就是MVC的设计模式。

2、MTV设计模式

  • Model:数据存储层,处理所有数据相关的业务,和数据库进行交互,并提供数据的增删改查;
  • Template:模版层具体来处理页面的显示;
  • View:业务逻辑层,处理具体的业务逻辑,它的作用是连通Model层和Template。

MTV设计模式的请求与响应过程的描述:

  • 用户通过浏览器对服务器发起request请求,服务器接收请求后,通过View的业务逻辑层进行分析,同时向Model层和Template层发送指令;
  • Model层与数据库进行交互,将数据返回给View层;
  • Template层接收到指令后,调用相应的模版,并返回给View层;
  • View层接收到模版与数据后,首先对模版进行渲染(即将相应的数据赋值给模版),然后组织成响应格式返回给浏览器,浏览器进行解析后最终呈现给用户。

二、Django模块讲解

1、ORM

ORM即对象关系映射,它是一种基于关系型数据库的程序技术。ORM允许使用类和对象对数据库进行操作。

Web开发中对数据库的操作是必不可少的,然而每种数据库的操作方式以及用法不尽相同。由于Django中ORM的存在,为我们操作不同种类的数据库提供了统一的方法,ORM适配了多种常用的关系型数据库。

ORM把类映射成数据库中的表,把类的一个实例对象映射成数据库中的数据行,把类的属性映射成表中的字段,通过对象的操作对应到数据库表的操作,实现了对象到SQL、SQL到对象转换过程。

Django把表模型定义为Model,他需要继承自django.db.models中的Model类,只要与数据表相关的操作,都需要继承这个类,同时ORM对于数据库的增删改查,也提供了一些简单的API,例如F查询等

2、Django中定义数据表

在创建好APP后

1、模型类

模型类本质上属于一个python类,只不过在Django中称之为模型类,它是由 django.db.models.Model 派生出来的子类,在Django中模型类是数据交互的接口,一个模型类代表数据库中的一张数据表,模型类中每一个类属性都代表数据表中的一个字段。

2、定义数据表

from django.db import models

class User(models.Model):
    username = models.CharField(max_length=20)
    password = models.IntegerField()
    email = models.EmailField()

通过上述代码,一张用户数据表就创建完成了。

1、使用django包导入models模块;

2、使用class关键字对User表进行类定义,并继承models模块中的Models类;

3、上述数据表定义了用户姓名、密码和邮箱三种属性

3、ORM管理器对象

首先,大家需要知道每个继承 models.Model 的模型类,都会有一个objects对象被同时继承下来。这个对象就叫作“管理器对象”,数据库的增删改查可以用objects管理器对象来实现。

①:create插入数据

User.objects.create(username="Tom",password="root",email="wjx9669@qq.com")

②:创建实例对象,然后调用save()方法保存

Obj=User(username="Tom",password="root",email="wjx9669@qq.com")
Obj.name='Harry'
Obj.save()

对数据进行增删改查操作:

User.objects,all()#查询表中的所有记录
User.objects.filter(username_contains="T")#查询表中name含有“T”的所有记录
User.objects.get(username="Tom")#有且只有一个查询结果
User.objects.get(username="Tom").delete()#删除名字为Tom的记录
User.objects.get(username="Tom").update(username="Harry")#更新数据表的用户名为Harry

2、auth模块

3、Django Admin后台管理系统

4、Django视图函数

​ 在Django中,视图函数是一个python函数或者类,开发者主要通过编写视图函数来实现业务逻辑。视图函数首先接受来自浏览器或者客户端请求,并最终返回响应,视图函数返回的响应可以是HTML文件,也可以是HTTP协议中的303重定向。

from django.http import HttpResponse
def dgango(request):
    return HttpResponse('人生苦短,我学python!')

1)HttpResponse视图响应类型

它是一种视图的响应类型。

2)视图函数参数request

Django规定,视图函数至少有一个参数,第一个参数必须是request,request是HttpResponse请求类型的对象,它携带了浏览器的请求信息,所以视图函数的第一个参数必须为request。

3)return视图响应

视图函数要返回响应内容,它被作为HttpResponse的对象返回给浏览器。

5、Django 模版系统

在 Django中我们把“模版”称之为Template,它的存在使得HTML和View视图层实现了解耦。当创建好一个Django项目后,会在项目的同级目录下创建一个template文件夹,对它进行简单的配置后,这个文件夹被Django自动识别。一般,我们会在Template文件夹里写HTML代码,用来作为响应内容。

1)模版传参

在HTML代码中可以使用变量并且可以进行传参,视图函数必须把数据形成字典的形式才可以传递给模版。

2)render方法

render是view层加载模版的一种方式,它封装在django.shortcuts模块中,render方法使用起来非常方便,它首先加载模版,然后将加载完成的模版响应给浏览器。

三、系统讲解

1、Django路由系统应用

Django中利用ROOT_URLCONF构建了URL与视图函数的映射关系。在django.conf.urls中封装了路由模块,新建的Django项目中提供了urls.py路由配置文件,urls.py文件中定义了一个urlpatterns的列表,它是由url()实例对象组成的列表。

2、Django 中间件

中间件作为一个可插拔的组件对外提供服务,每个中间件都负责完成一些特定的功能。

中间件是介于request与response之间的一道处理过程,相对比较轻量级。

3、Django Cache缓存系统

缓存是指保存一些计算开销较大的数据,可以是某个网页,也可以是网页的一部分,或者仅仅只是格式化的数据,合理运用缓存技术可以减少数据库访问次数。

posted on 2024-02-06 19:33  星辰与Python  阅读(24)  评论(0编辑  收藏  举报