The Django Book:第5章 与数据库交互:模型
第3章我们谈到了用Django构建动态网站,设置视图和URL配置
如我们所说,试图负责逻辑和返回应答,例子中我们计算了当前的日期和时间
现在的Web程序中常常和数据库打交道
一个数据库驱动的网站在后台连接数据库服务器,得到并显示很好的格式化的Web页面
同样,网站也可以提供给访问者也具有操作数据库的功能
许多复杂的网站以上两种功能的结合,如Amazon.com就是一个数据库驱动的站点
每一个产品页面都是Amazon数据库格式后的HTML,你访问页面也就是间接访问数据库
Django很适合数据库驱动的网站,通过Python它提供强大的数据库访问能力
这章将讲述Django的数据库层
在视图里进行数据库查询的“哑”方式
前一章讲到通过在视图里硬编码HTML来输出HTML的“哑”方式,在视图里也有得到数据库数据的“哑”方式
这很简单,只是使用一些Python库执行SQL查询并且处理结果
在下面的例子里我们使用MySQLdb库(可以在如下地址得到http://sourceforge.net/projects/mysql-python)
来连接MySQL数据库,得到一些记录来填充模板,并显示到Web页面上:
代码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('SELECT 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})
确认你定义的任何模型都有一个__str__()方法,不仅是使在你自己使用交互环境时更方便
也因为当Django在几个地方需要显示对象时会使用__str__()的输出
最后,注意__str__()是给模型添加行为的好习惯
一个Django模型描述的不仅仅是一个对象数据库表结构,它也描述了对象知道怎样去做的功能
__str__()就是这样的功能的一个例子,一个模型知道怎样显示它自己
创建和修改对象
This chapter is not yet finished.[list][img][/img] |