|
old_taoist
|
2.0/chapter07/#43 |
2009-12-08 14:38:08
|
<literal>"/hello/?print=true"</literal> |
|
old_taoist
|
2.0/chapter07/#45 |
2009-12-08 14:37:51
|
<literal>request.is_secure()</literal> |
|
old_taoist
|
2.0/chapter07/#50 |
2009-12-08 14:37:24
|
<literal>True</literal> 或者 <literal>False</literal> |
|
old_taoist
|
2.0/chapter07/#68 |
2009-12-08 14:36:53
|
<literal>"Mozilla/5.0 (X11;
U; Linux i686; fr-FR; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17"</literal> .
|
|
old_taoist
|
2.0/chapter07/#438 |
2009-12-08 14:36:11
|
<literal>"I love your site!"</literal> |
|
old_taoist
|
2.0/chapter07/#517 |
2009-12-08 14:35:20
|
Hosting graciously provided by
|
|
old_taoist
|
2.0/chapter07/#516 |
2009-12-08 14:35:04
|
Document License`_.
|
|
old_taoist
|
2.0/chapter19/#53 |
2009-12-08 14:29:38
|
我们将详细地对以上步骤逐一进行描述。
|
|
old_taoist
|
2.0/chapter19/#27 |
2009-12-08 14:26:31
|
本质上来说,Django做两件事情:
|
|
old_taoist
|
2.0/chapter19/#25 |
2009-12-08 14:24:53
|
Django会根据用户的语言偏好,在线地运用这些异常分支指令去翻译Web应用程序。
|
|
old_taoist
|
2.0/chapter19/#18 |
2009-12-08 14:21:10
|
即使您的母语不是英语,Django也很有可能已经被翻译为您的母语了。
|
|
old_taoist
|
2.0/chapter19/#16 |
2009-12-08 14:18:01
|
Django本身是完全国际化了的,所有的字符串均因翻译所需而被标记,并且设定了与地域无关的显示控制值,如时间和日期。
|
|
old_taoist
|
2.0/chapter19/#4 |
2009-12-08 14:16:17
|
Django诞生于美国中部堪萨斯的劳伦斯,距美国的地理中心不到40英里。
|
|
|
2.0/chapter08/#369 |
2009-12-07 15:59:58
|
现在我们就拥有了一个不错的,可以通用的视图函数了,里边封装着由<literal> request.method</literal> 的返回值来分派不同的视图的程序。关于<literal> method_splitter()</literal> 就不说什么了,当然,我们可以把它们重用到其它项目中。
|
|
|
2.0/chapter08/#367 |
2009-12-07 15:47:50
|
(比如,<literal> some_page_post()</literal> 被调用的时候,我们可以确信<literal> request.method</literal> 返回的值是<literal> post</literal> 。)当然,这样做不止更安全也能更好的将代码文档化,这里我们做了一个假定,就是<literal> request.method</literal> 能象我们所期望的那样工作。
|
|
|
2.0/chapter08/#367 |
2009-12-07 15:44:31
|
(比如,<literal> some_page_post()</literal> 被调用的时候,我们可以确信<literal> request.method</literal> 返回的值是<literal> post</literal> 。)当然,这样做不止更安全也能更好的将代码文档化,这里我们做了一个假定,就是<literal> request.method</literal> 会象我们所期望的那样工作。
|
|
|
2.0/chapter08/#366 |
2009-12-07 15:28:20
|
注意,在技术上这些视图函数就不用再去检查<literal> request.method</literal> 了,因为<literal> method_splitter()</literal> 已经替它们做了。
|
|
|
2.0/chapter08/#366 |
2009-12-07 15:28:00
|
注意,在技术上这些试图函数就不用再去检查<literal> request.method</literal> 了,因为<literal> method_splitter()</literal> 已经替它们做了。
|
|
|
2.0/chapter08/#364 |
2009-12-07 15:17:46
|
最终,我们把<literal> some_page()</literal> 视图分解到两个视图函数中<literal> some_page_get()</literal> 和<literal> some_page_post()</literal> 。这比把所有逻辑都挤到一个单一视图的做法要优雅得多。
|
|
|
2.0/chapter08/#362 |
2009-12-07 15:10:43
|
在URLconf中,我们把<literal> /somepage/</literal> 指到<literal> method_splitter()</literal> 函数,并把视图函数额外需要用到的<literal> GET</literal> 和<literal> POST</literal> 参数传递给它。
|
|
|
2.0/chapter08/#362 |
2009-12-07 15:08:24
|
在URLconf中,我们把<literal> /somepage/</literal> 指到<literal> method_splitter()</literal> 函数,并把视图函数需要用到的<literal> GET</literal> 和<literal> POST</literal> 参数传递给它。
|
|
|
2.0/chapter08/#360 |
2009-12-07 14:58:49
|
如果<literal> request.method</literal> 返回的是其它值(如:<literal> HEAD</literal> ),或者是没有把<literal> GET</literal> 或<literal> POST</literal> 提交给此函数,那它就会抛出一个<literal> Http404</literal> 错误。
|
|
|
2.0/chapter08/#359 |
2009-12-07 12:43:07
|
如果<literal> request.method</literal> 返回的是<literal> POST</literal> ,那它调用的就是<literal> POST</literal> 视图。
|
|
|
2.0/chapter08/#358 |
2009-12-07 12:42:06
|
我们写了一个新的视图,<literal> method_splitter()</literal> ,它根据<literal> request.method</literal> 返回的值来调用相应的视图。可以看到它带有两个关键参数,<literal> GET</literal> 和<literal> POST</literal> ,也许应该是<emphasis> 视图函数</emphasis> 。如果<literal> request.method</literal> 返回<literal> GET</literal> ,那它就会自动调用<literal> GET</literal> 视图。
|
|
|
2.0/chapter08/#356 |
2009-12-07 12:29:21
|
让我们从头看一下代码是如何工作的:
|
|
|
2.0/chapter08/#353 |
2009-12-07 12:27:31
|
下边的示例展示了这个技术是如何帮我们改进前边那个简单的<literal> some_page()</literal> 视图的:
|
|
|
2.0/chapter08/#353 |
2009-12-07 12:27:15
|
下边的示例展示了这个技术是如何帮我们改进前边那个简单的<literal> some_page()</literal> 视图函数的:
|
|
|
2.0/chapter08/#352 |
2009-12-07 12:22:57
|
我们可以像这样做:先写一个视图函数然后由它来具体分派其它的视图,在之前或之后可以执行一些我们自定的程序逻辑。
|
|
|
2.0/chapter08/#352 |
2009-12-07 12:19:00
|
我们可以像这样做:先写一个视图函数然后由它来具体分派其它的视图。
|
|
|
2.0/chapter08/#350 |
2009-12-07 12:08:57
|
一个比较好的设计习惯应该是,用两个分开的视图函数——一个处理<literal> POST</literal> 请求,另一个处理<literal> GET</literal> 请求,然后在相应的地方分别进行调用。
|
|
|
2.0/chapter08/#349 |
2009-12-07 12:02:51
|
<literal> /somepage/.</literal>正如大家所看到的,在同一个视图函数中对<literal> POST</literal> 和<literal> GET</literal> 进行处理是一种很初级也很粗糙的做法。
|
|
|
2.0/chapter08/#349 |
2009-12-07 12:01:42
|
<literal></literal> .正如大家所看到的,在同一个视图函数中对<literal> POST</literal> 和<literal> GET</literal> 进行处理是一种很初级也很粗糙的做法。
|
|
|
2.0/chapter08/#349 |
2009-12-07 11:59:57
|
<literal></literal> .从这点来看,在同一个视图函数中对<literal> POST</literal> 和<literal> GET</literal> 进行处理是一种很初级也很粗糙的做法。
|
|
|
2.0/chapter08/#349 |
2009-12-07 11:58:28
|
<literal></literal> .从这点来看,在同一个视图函数中对<literal> POST</literal> 和<literal></literal> 进行处理是一种很初级也很粗糙的做法。
|
|
|
2.0/chapter08/#349 |
2009-12-07 11:57:56
|
<literal></literal> .从这点来看,在同一个视图函数中对<literal> POST</literal> 和<literal></literal> 进行处理是一种很初级也很粗糙的做法。
|
|