Djanog学习笔记-模型

Djanog学习笔记-模型

数据库驱动网站:在后台连接数据库服务器,从中取出一些数据,然后在Web页面用漂亮的格式展示这些数据。网站还可能会向访问者提供修改数据库数据的方法。

在视图中进行数据库查询的笨方法

笨方法:用现有的任何Python类库执行一条SQL查询并对 结果进行一些处理,eg:

from django.shortcuts import render_to_response
import MySQLdb

def book_list(request):
    db = MySQLdb.connect(user='me', db='mydb', passwd='secret', host='localhost')
    cursor = db.cursor()
    cursor.execute('SELCT name FROM books ORDER BY name')
    names = [row[0] for row in cursor.fetchall()]
    db.close()
    return render_to_response('book_list.html', {'names': names})

笨方法引发的问题:

实际问题理想情况
我们将数据库连接参数硬性编码于代码中这些参数应当保存在Django配置中
我们不得不重复同样的代码:创建数据库连接、创建数据库游标、执行语句、关闭数据库我们所需要应该只是指定所需的结果
它把我们栓死在MySQL之上,如果我们要从MySQL换到PostgreSQL,就不得不使用不同的数据库适配器(例如psycopg而不是MySQLdb)改变连接参数,根据SQL语句的类型可能还要修改SQL应对所使用的数据库服务器进行抽象,这样一来只在一处修改即可变换数据库服务器

Django数据库层:
正是解决以上问题的,下面使用Django数据库API重写之前的视图:

from django.shortcuts import render_to_response
from mysite.books.models import Book

def book_list(request):
    books = Book.objects.order_by('name')
    return render_to_response('book_list.html', {'books': books})

MTV开发模式:

把数据存取逻辑、业务逻辑和表现逻辑组合在一起的概念称为软件架构的Model-View-Controller(MVC)模式。

其中,Model代表数据存取层,View代表的是系统中选择显示什么和怎么显示的部分,Controller指的是系统中根据用户输入并视需要访问模型,以决定使用哪个视图的哪部分。

Django也遵循这种MVC模式,可以称得上是一种MVC框架,以下是Django中的M、V、C各自的含义:

  • M:数据存取部分,由django数据库层处理;

  • V:选择哪些数据要显示以及怎样显示,由视图和模板处理;

  • C:根据用户输入委派视图的部分,由Django框架根据URLconf设置,对给定URL调用适当的Python函数;

C由框架自行处理,而Django里更关注的是模型(Model)、模板(Template)、视图(Views),Django也被称为MTV框架,在MTV开发模式中:

  • M:代表模型(Model),即数据存取层,该层处理与数据相关的所有事务,如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等;

  • T:代表模板(Template),即表现层,该层处理与表现相关的决定:如何在页面或其他类型文档中进行显示;

  • V:代表视图(Views),即业务逻辑层,该层包含存取模型及调取恰当模板的相关逻辑,可以看作模型和模板之间的桥梁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值