Chen Ming
|
2.0/chapter10/#210 |
2010-04-29 14:19:02
|
例如,下面的模型有<emphasis> 两个</emphasis> manager。一个返回所有对像,另一个只返回作者是Roald Dahl的书。
|
|
Chen Ming
|
2.0/chapter10/#205 |
2010-04-29 14:18:18
|
例如,<literal> Book.objects.all()</literal> 返回数据库book中的所有书本。
|
|
Chen Ming
|
2.0/chapter10/#228 |
2010-04-29 14:17:33
|
这个例子允许你执行<literal> Person.men.all()</literal> ,<literal> Person.women.all()</literal> ,<literal> Person.people.all()</literal> 查询,生成你想要的结果。
|
|
Chen Ming
|
2.0/chapter10/#231 |
2010-04-29 14:16:50
|
Django将会把第一个<literal>Manager</literal> 定义为默认<literal>Manager</literal> ,Django的许多部分(但是不包括admin应用)将会明确地为模型使用这个<literal>manager</literal>。
|
|
Chen Ming
|
2.0/chapter10/#254 |
2010-04-29 14:15:22
|
你可以通过导入<literal>django.db.connection</literal>对像来轻松实现,它代表当前数据库连接。
|
|
Chen Ming
|
2.0/chapter10/#255 |
2010-04-29 14:14:55
|
要使用它,需要通过<literal>connection.cursor()</literal>得到一个游标对像。
|
|
Chen Ming
|
2.0/chapter10/#232 |
2010-04-29 14:14:21
|
结论是,你应该小心地选择你的默认manager。因为覆盖<literal>get_query_set()</literal> 了,你可能接受到一个无用的返回对像,你必须避免这种情况。
|
|
Chen Ming
|
2.0/chapter10/#251 |
2010-04-29 14:13:47
|
执行原始SQL查询
|
|
Chen Ming
|
2.0/chapter10/#246 |
2010-04-29 14:13:35
|
想了解更多关于属性的信息请访问<reference name="http://www.python.org/download/releases/2.2/descrintro/#property" refuri="http://www.python.org/download/releases/2.2/descrintro/#property">http://www.python.org/download/releases/2.2/descrintro/#property</reference> |
|
Chen Ming
|
2.0/chapter10/#271 |
2010-04-29 14:11:35
|
接下来做什么?
|
|
Chen Ming
|
2.0/chapter10/#261 |
2010-04-29 14:11:16
|
如果你对Python DB-API不熟悉,请注意在<literal>cursor.execute()</literal> 的SQL语句中使用<literal> "%s"</literal> ,而不要在SQL内直接添加参数。
|
|
Chen Ming
|
2.0/chapter10/#260 |
2010-04-29 14:10:13
|
<literal>connection</literal>和<literal>cursor</literal>几乎实现了标准Python DB-API,你可以访问<reference name="http://www.python.org/peps/pep-0249.html" refuri="http://www.python.org/peps/pep-0249.html"> http://www.python.org/peps/pep-0249.html</reference>来获取更多信息。
|
|
Chen Ming
|
2.0/chapter10/#256 |
2010-04-29 14:08:35
|
然后,使用<literal>cursor.execute(sql, [params])</literal>来执行SQL语句,使用<literal>cursor.fetchone()</literal>或者<literal>cursor.fetchall()</literal>来返回记录集。
|
|
Chen Ming
|
2.0/chapter10/#273 |
2010-04-29 14:07:01
|
在<reference name="next chapter" refuri="../chapter11/">下一章</reference> 我们将讲解Django的通用视图框架,使用它创建常见的网站可以节省时间。
|
|
Chen Ming
|
2.0/chapter09/#204 |
2010-04-29 13:53:14
|
<literal><</literal> 被转化为<literal><</literal> |
|
Chen Ming
|
2.0/chapter09/#204 |
2010-04-29 13:51:11
|
<literal></literal><literal></literal> |
|
Chen Ming
|
2.0/chapter09/#181 |
2010-04-29 13:46:17
|
用户名
|
|
Chen Ming
|
2.0/chapter09/#179 |
2010-04-29 13:45:10
|
类似的,如果用户名包含<literal>小于</literal>符号,就像这样:
|
|
Chen Ming
|
2.0/chapter09/#179 |
2010-04-29 13:44:53
|
类似的,如果用户名包含<literal>小于('<')</literal>符号,就像这样:
|
|
Chen Ming
|
2.0/chapter09/#179 |
2010-04-29 13:44:00
|
类似的,如果用户名包含<literal>小于</literal>符号,就像这样:
|
|
Chen Ming
|
2.0/chapter09/#179 |
2010-04-29 13:43:31
|
类似的,如果用户名包含<literal>小于</literal>(<)符号,就像这样:
|
|
Chen Ming
|
2.0/chapter09/#179 |
2010-04-29 13:42:32
|
类似的,如果用户名包含了<literal><</literal>符号,就像这样:
|
|
Chen Ming
|
2.0/chapter09/#179 |
2010-04-29 13:41:03
|
类似的,如果用户名包含了<literal><</literal><符号,就像这样:
|
|
Chen Ming
|
2.0/chapter09/#179 |
2010-04-29 13:40:22
|
类似的,如果用户名包含了<literal>'<'</literal>符号,就像这样:
|
|
Chen Ming
|
2.0/chapter09/#179 |
2010-04-29 13:39:45
|
类似的,如果用户名包含了<literal>'<'</literal>符号,就像这样:
|
|
Chen Ming
|
2.0/chapter09/#179 |
2010-04-29 13:39:32
|
类似的,如果用户名包含了<literal>'<'</literal>符号,就像这样:
|
|
Chen Ming
|
2.0/chapter09/#5 |
2010-04-29 13:32:19
|
本章深入探讨Django的模板系统。
|
|
Chen Ming
|
2.0/chapter09/#693 |
2010-04-29 13:29:48
|
接下来做什么?
|
|
Chen Ming
|
2.0/chapter08/#480 |
2010-04-29 13:26:21
|
Hosting graciously provided by
|
|
Chen Ming
|
2.0/chapter08/#474 |
2010-04-29 13:25:20
|
接下来做什么?
|
|
Chen Ming
|
2.0/chapter08/#280 |
2010-04-29 13:22:10
|
<literal>'1'</literal> ,不是整数<literal>1</literal>。这是为了保持一致,因为获取的<literal>num</literal>的值总是字符串。
|
|
Chen Ming
|
2.0/chapter08/#230 |
2010-04-29 13:16:01
|
<literal>model.objects.all()</literal>一行是<emphasis>鸭子类型(duck typing)</emphasis> :如果它走路像鸭子,叫声也像鸭子,那么我们就把它当做鸭子。
|
插入标记
|
Chen Ming
|
2.0/chapter08/#36 |
2010-04-29 13:01:51
|
我们可以把公共的前缀提取出来,作为第一个参数传给<literal>patterns()</literal>函数,像这样:
|
|
Chen Ming
|
2.0/chapter08/#35 |
2010-04-29 13:00:34
|
在我们的URLconf例子中,每个视图字符串的开始部分都是<literal>mysite.views</literal>,造成重复输入。
|
|
Chen Ming
|
2.0/chapter08/#3 |
2010-04-29 12:56:48
|
在<reference name="Chapter 3" refuri="../chapter03/">第三章</reference> ,我们已经对基本的Django视图功能和URL配置做了介绍。
|
插入标记
|
|
2.0/chapter08/#3 |
2010-04-29 12:55:51
|
在<reference name="Chapter 3" refuri="../chapter03/">第三章</reference> ,我们已经对基本的Django视图和URL配置做了介绍。
|
|
Chen Ming
|
2.0/chapter02/#289 |
2010-04-28 23:29:18
|
尽管这些的文件很小,但这些文件已经构成了一个可运行的Django应用。
|
|
Chen Ming
|
2.0/chapter02/#208 |
2010-04-28 23:28:15
|
如果你用的是Python2.4或更早的版本,你需要 SQLite 3<emphasis>而不是</emphasis>版本2,这个可从<reference name="http://www.djangoproject.com/r/sqlite/" refuri="http://www.djangoproject.com/r/sqlite/">http://www.djangoproject.com/r/sqlite/</reference><literal>pysqlite</literal><reference name="http://www.djangoproject.com/r/python-sqlite/" refuri="http://www.djangoproject.com/r/python-sqlite/">http://www.djangoproject.com/r/python-sqlite/</reference> |
|
Chen Ming
|
2.0/chapter02/#208 |
2010-04-28 23:21:05
|
如果你用的是Python2.4或更早的版本,你需要 SQLite 3<emphasis>而不是</emphasis>版本2,这个可从<reference name="http://www.djangoproject.com/r/sqlite/" refuri="http://www.djangoproject.com/r/sqlite/">http://www.djangoproject.com/r/sqlite/</reference><literal>pysqlite</literal><reference name="http://www.djangoproject.com/r/python-sqlite/" refuri="http://www.djangoproject.com/r/python-sqlite/">http://www.djangoproject.com/r/python-sqlite/</reference> |
|
Chen Ming
|
2.0/chapter02/#330 |
2010-04-28 23:17:49
|
接下来做什么?
|
|
ySJ
|
2.0/chapter20/#316 |
2010-04-28 10:40:11
|
在运行你的Django网站时,无论是为你或几个朋友的小网站,或者是下一个google,我们祝你好运。
|
|
ySJ
|
2.0/chapter20/#309 |
2010-04-28 10:39:10
|
花费很少,但是对你网站和用户的保护确是无价的。
|
|
ySJ
|
2.0/chapter20/#308 |
2010-04-28 10:37:52
|
事实上,每周或者每月花点时间挖掘Web应用安全,并且跟上最新的动态是一个很好的主意。
|
|
ySJ
|
2.0/chapter20/#307 |
2010-04-28 10:37:15
|
永远记住,Web安全是一个不断发展的领域。如果你正在阅读这本书的停止维护的那些版本,请阅读最新版本的这个部分来检查最新发现的漏洞。
|
|
ySJ
|
2.0/chapter20/#297 |
2010-04-28 10:36:22
|
正如我们在第12章所提到的,Django的<literal> DEBUG</literal> 设置控制这些错误信息的显示。
|
|
ySJ
|
2.0/chapter20/#272 |
2010-04-28 10:31:28
|
Django内置的静态内容视图是做转义的一个好的示例(在 <literal>django.views.static</literal> 中)。这是相关代码:
|
|
ySJ
|
2.0/chapter20/#270 |
2010-04-28 10:30:42
|
不用多说,你 <emphasis>永远</emphasis> 不要在编写可以读取任何位置上的文件的代码!
|
|
ySJ
|
2.0/chapter20/#254 |
2010-04-28 10:22:44
|
尽管一眼看上去,视图通过 <literal>BASE_PATH</literal> (通过使用 <literal>os.path.join</literal> )限制了对于文件的访问,但如果攻击者使用了包含 <literal>..</literal> (两个句号,父目录的一种简写形式)的文件名,她就能够访问到 <literal>BASE_PATH</literal> 目录结构以上的文件。对她来说,发现究竟使用几个点号只是时间问题,比如这样:<literal>../../../../../etc/passwd</literal>。
|
|
ySJ
|
2.0/chapter20/#241 |
2010-04-28 10:17:51
|
Django内建邮件功能(在 <literal>django.core.mail</literal> 中)根本不允许在用来构建邮件头部的字段中存在换行符(表单,收件地址,还有主题)。
|
|
ySJ
|
2.0/chapter20/#220 |
2010-04-28 10:09:44
|
<emphasis>邮件头部注入</emphasis> :SQL注入的兄弟,是一种通过劫持发送邮件的Web表单的攻击方式。
|
|