zjm1126
|
2.0/chapter12/#10 |
2009-11-23 14:49:44
|
在本章,我们将展示如何做,但是,在做之前我们要给你一个(要做的事的)清单
|
|
zjm1126
|
2.0/chapter12/#10 |
2009-11-23 14:49:59
|
在本章,我们将展示如何做,但是,在做之前我们要给你一个(要做的事的)清单.
|
|
zjm1126
|
2.0/chapter12/#12 |
2009-11-23 14:51:28
|
准备你的代码库
|
|
zjm1126
|
2.0/chapter12/#14 |
2009-11-23 15:01:47
|
很幸运,<literal>runserver</literal> |
|
zjm1126
|
2.0/chapter12/#14 |
2009-11-23 15:05:03
|
很幸运,<literal>runserver</literal> |
|
zjm1126
|
2.0/chapter12/#15 |
2009-11-23 15:06:22
|
但是,在开始前,有一些<emphasis>essential things</emphasis> |
|
zjm1126
|
2.0/chapter12/#17 |
2009-11-23 15:07:48
|
关闭Debug模式.
|
|
zjm1126
|
2.0/chapter12/#19 |
2009-11-23 15:20:55
|
我们在第2章创建了一个project ,命令 <literal>django-admin.py startproject</literal>
created a <literal>settings.py</literal> file with <literal>DEBUG</literal> set to <literal>True</literal> . django会检查这个设置和改变他们的行为, 如果 <literal>DEBUG</literal> 模式被开启.
|
|
zjm1126
|
2.0/chapter12/#20 |
2009-11-23 15:23:01
|
例如, 如果 <literal>DEBUG</literal> 被设置成 <literal>True</literal> , 那么:
|
|
zjm1126
|
2.0/chapter12/#24 |
2009-11-23 15:33:01
|
任何404错误都将呈现django的特殊的404页面(第3章有)而不是普通的404页面。
|
|
zjm1126
|
2.0/chapter12/#22 |
2009-11-23 15:39:18
|
所有的数据库查询将被保存在内存中, 以
<literal>django.db.connection.queries</literal> 的形式. 你可以想象,这个吃内存!
|
|
zjm1126
|
2.0/chapter12/#25 |
2009-11-23 15:41:45
|
这个页面包含潜在的敏感信息,但是不会暴露在公共互联网。
|
|
zhaohongjian000@gmail.com
|
2.0/chapter12/#247 |
2010-04-11 15:38:22
|
除非你的 Django 设置的确出了问题。
|
修改
|
zhaohongjian000@gmail.com
|
2.0/chapter12/#185 |
2010-04-11 15:42:38
|
注意这里使用 <literal></literal> 指令而不是 <literal></literal> 。
|
下一句的翻译放在了这一句
|
zhaohongjian000@gmail.com
|
2.0/chapter12/#186 |
2010-04-11 15:44:18
|
后者用于指向你的文件系统中的一个位置,然而 <literal></literal>
指向一个 Web 站点的 URL 位置。
|
|
zhaohongjian000@gmail.com
|
2.0/chapter12/#187 |
2010-04-11 15:45:47
|
<literal></literal> |
|
zhaohongjian000@gmail.com
|
2.0/chapter12/#187 |
2010-04-11 15:47:39
|
<literal></literal> |
|
yulefox
|
2.0/chapter20/#55 |
2010-02-08 18:04:10
|
想象一下,如果攻击者在查询框中输入 <literal>"' OR 'a'='a"</literal> 。
|
移到下一句
|
yulefox
|
2.0/chapter20/#56 |
2010-02-08 18:04:28
|
此时,查询的字符串会构造如下:
|
|
yulefox
|
2.0/chapter01/#24 |
2010-02-09 09:10:30
|
最重要的是,理解实现的<emphasis></emphasis>会使你成为一个优秀的web开发者。)
|
|
yulefox
|
2.0/chapter01/#24 |
2010-02-09 09:11:03
|
最重要的是,理解实现的来龙去脉会使你成为一个优秀的web开发者。)
|
|
yulefox
|
2.0/chapter01/#180 |
2010-02-09 09:13:03
|
如果你有Python开发经验,在学习过程中应该不会有任何问题。
|
|
yulefox
|
2.0/chapter01/#181 |
2010-02-09 09:13:57
|
基本上,Django的代码并 没有使用一些黑色魔法(例如代码中的欺骗行为,某个实现解释或者理解起来十分困难)。
|
|
yulefox
|
2.0/chapter01/#182 |
2010-02-09 09:14:17
|
对你来说,学习Django就是学习她的命名规则和API。
|
|
yukonli
|
2.0/chapter08/#291 |
2009-12-15 16:43:01
|
比方说,你可以考虑通过下面这个URLpattern所描述的方式来向Django的管理站点添加一个目标页面
|
|
yukonli
|
2.0/chapter08/#371 |
2009-12-15 17:23:43
|
然而,当我们做到这一步时,我们仍然可以改进method_splitter。从代码我们可以看到,它假设Get和POST视图除了request之外不需要任何其他的参数。那么,假如我们想要使用method_splitter与那种会从URL里捕捉字符,或者会接收一些可选参数的视图一起工作时该怎么办呢?
|
|
yukonli
|
2.0/chapter08/#371 |
2009-12-15 18:00:44
|
然而,当我们做到这一步时,我们仍然可以改进<literal> method_splitter</literal> 。从代码我们可以看到,它假设<literal> Get</literal> 和<literal> POST</literal> 视图除了<literal> request</literal> 之外不需要任何其他的参数。那么,假如我们想要使用<literal> method_splitter</literal> 与那种会从URL里捕捉字符,或者会接收一些可选参数的视图一起工作时该怎么办呢?
|
|
ySJ
|
2.0/chapter03/#39 |
2010-04-09 09:29:11
|
在这里我们把它命名为:hello,是因为这个名称清晰的显示了视图的用途。当然,你也可以叫它:hello_wonderful_beautiful_world,或其它类似的啰嗦形式。
|
|
ySJ
|
2.0/chapter03/#43 |
2010-04-09 09:35:09
|
它仅仅返回一个HttpResponse对象,此处用文本“Hello world”做了个实例。
|
|
ySJ
|
2.0/chapter03/#46 |
2010-04-09 09:38:17
|
视图不过是一个Python函数,它采用HttpRequest作为它的第一个参数并且返回一个HttpResponse的实例。为了使一个Python函数成为一个Django视图,它必须干这俩件事。
|
|
ySJ
|
2.0/chapter03/#51 |
2010-04-09 09:41:26
|
现在,如果你再运行:python manage.py runserver,你还将看到Django的欢迎页面,而不是我们刚才写的Hello world视图。
|
|
ySJ
|
2.0/chapter03/#52 |
2010-04-09 09:43:28
|
那是因为我们的mysite项目还对hello视图一无所知。我们需要明确地告诉Django: 我们要用一个特定的URL来激活这个视图。
|
|
ySJ
|
2.0/chapter03/#55 |
2010-04-09 09:46:11
|
<emphasis> URLconf</emphasis> 就好像是基于Django的Web站点的一张内容表。
|
|
ySJ
|
2.0/chapter03/#56 |
2010-04-09 09:47:31
|
它本质上是 URL 模式以及要为该 URL 模式调用的视图函数之间的映射表。
|
|
ySJ
|
2.0/chapter03/#58 |
2010-04-09 09:48:36
|
例如,当用户访问/foo/时,调用视图函数foo_view(),这个视图函数存在于Python模块文件views.py中。
|
|
ySJ
|
2.0/chapter03/#64 |
2010-04-09 09:51:11
|
默认的URLconf包含了一些被注释起来的Django常用的功能,只需去掉这些注释就可以开启这些功能.
|
|
ySJ
|
2.0/chapter03/#76 |
2010-04-09 09:56:44
|
当前应该注意是 <literal>urlpatterns</literal> 变量, Django 期望能从 URLconf 模块中找到它。
|
|
ySJ
|
2.0/chapter03/#80 |
2010-04-09 09:57:55
|
如果 URLconf 为空,Django 会认定你才创建好新项目,因此也就显示那种信息。)
|
|
ySJ
|
2.0/chapter03/#80 |
2010-04-09 09:58:31
|
如果 URLconf 为空,Django 会认定你刚创建好新项目,因此也就显示那个欢迎信息。)
|
|
ySJ
|
2.0/chapter03/#82 |
2010-04-09 09:59:30
|
如果想在URLconf中加入URL和view,只需增加映射URL模式和view功能的Python 元组即可.
|
|
ySJ
|
2.0/chapter03/#86 |
2010-04-09 09:59:59
|
(请留意:为了简洁,我们移除了注释代码。
|
|
ySJ
|
2.0/chapter03/#103 |
2010-04-09 10:09:01
|
如果文件不存在,Python将查找 <literal>/usr/lib/python2.4/site-packages/foo.py</literal> 文件。如果仍然不存在,Python会尝试<literal>/home/username/djcode/foo.py</literal>。最后,如果还是找不到,Python会抛出一个<literal>ImportError</literal>异常。
|
|
ySJ
|
2.0/chapter03/#108 |
2010-04-09 10:10:20
|
通常,你不必关心 Python 搜索路径的设置。Python 和 Django 会在后台自动帮你处理好。
|
|
ySJ
|
2.0/chapter03/#109 |
2010-04-09 10:11:59
|
(设置Python路径是<literal>manage.py</literal>脚本完成的工作之一。)
|
|
ySJ
|
2.0/chapter03/#128 |
2010-04-09 10:29:53
|
然而,默认地,任何不匹配或尾部没有斜杠(/)的申请URL,将被重定向至尾部包含斜杠的相同URL。
|
|
ySJ
|
2.0/chapter03/#139 |
2010-04-09 10:34:09
|
开发服务器将自动检测Python代码的变动来做必要的重新加载, 所以你不需要在更改代码之后重启服务器。)服务器运行地址是<literal> http://127.0.0.1:8000/</literal> ,所以打开浏览器直接输入<literal> http://127.0.0.1:8000/hello/</literal> ,你将看到由你的Django视图输出的Hello world。
|
|
ySJ
|
2.0/chapter03/#138 |
2010-04-09 10:36:06
|
现在我们来测试修改好的 URLconf, 像第二章一样,运行命令<literal>python manage.py runserver</literal> 以启动服务器。 (如果你让它一直运行也可以。
|
|
ySJ
|
2.0/chapter03/#142 |
2010-04-09 10:36:51
|
你已经创建了第一个Django的Web页面。
|
|
ySJ
|
2.0/chapter03/#147 |
2010-04-09 10:38:13
|
Django URLconfs 允许你 使用任意的正则表达式来做强有力的URL映射,不过你实际上可能只需要使用很少的一 部分功能。
|
|
ySJ
|
2.0/chapter03/#183 |
2010-04-09 10:42:02
|
<literal>?</literal> |
|