Django Book 1
Posted in Python on 十二月 12th, 2007 by admin – Be the first to comment开始翻译 djangobook,前两章都是些简介之类的,略过了,从第三章开始。个人觉得,有时候翻译真是一种再好不过的学习方式。在这个过程中,每句话每个字我都会用心体会,这是其它学习方式所不能达到的,而且稍带着还复习了外语。尽管它很耗时,但与收到的效果相比,是值得的。吃方便面很快,但不营养。
第三章 动态网页基础
先前的章节,我们介绍了如何创建一个 Django 项目以及如何运行 Django 的开发服务器。当然,那个站点并没有做任何有意义的事,它所做的只不过是显示 “It worked!” 这条信息。本章我们将试着改变它所显示的内容。
你的第一个视图:动态内容
我们来创建个页面,目标是显示当前的日期和时间。这是一个很好的动态页面的例子,因为它的内容不是静止不变的,相反,它的内容会随一台计算机(具体说,是这台计算机的当前时间)而变化。
这个简单的例子并不涉及数据库以及任何形式的用户输入,它只与你服务器的内在时钟有关。
要创建这个页面,我们将编写一个视图函数。所谓视图函数,或者简称为视图,其实就是一个携带了 Web 请求并且返回一个 Web 响应的 Python 函数。这种响应可以是 HTML,或者重定向,或者 404 错误,或者 XML 文档,或者图像等等任何可能的东西。而视图本身则包含返回这种响应所需要的逻辑。
下面是一个视图,它将当前日期和时间作为 HTML 文档返回:
1 2 3 4 5 6 7 8 | from django.http import HttpResponse import datetime def current_datetime( request ): now = datetime.datetime.now() html = 'It is now %s.' % now return HttpResponse( html ) |
我们来逐行解释上述代码:
- 首先,我们导入 HttpResponse 类,它位于 django.http 模块。
- 然后,我们从 Python 标准库( Python 自带的一组常用模块)导入 datetime 模块。datetime 模块包含若干处理日期和时间的函数或类,其中一个函数用于返回当前时间。
- 接着,我们定义了一个叫 current_datetime 的函数。它是视图函数,因此,它带了一个 HttpRequest 对象作为它的第一个参数。每个视图函数都要把 HttpRequest 作为它的第一个参数。在 Django 中,我们叫它 request。
注意视图函数的名称是无关紧要的,Django 并不在意它叫什么,并且不必以某种特定的方式来为它命名以便 Django 可以认出它。这里我们把它叫作 current_datetime,因为这个名字直观的显示了它将做些什么,但它完全可以被命名为诸如 super_duper_awesome_current_time 等等之类不讨人喜欢的名字。Django 本身并不在意这个(那么,Django 如何找到这个函数呢?我们待会儿再说)。
- 函数内的第一行代码计算当前的日期和时间,计算结果作为 datetime.datetime 对象存储到局部变量 now 中。
- 函数内的第二行代码使用 Python 的字符串格式化功能生成了一段 HTML 响应。字符串中的 %s 是占位符,而字符串后的百分号意思是将字符串中的 %s 以变量 now 的值替换。
(正统 HTML 使用者请注意:是的,我们的确是漏掉了 DOCTYPE,以及 ,以及其它一些元素。这只不过是为了让例子保持简单而已。)
- 最后,这个视图返回了一个 HttpResponse 对象,它包含所产生的 HTML。每个视图函数必须返回一个 HttpResponse 对象(也有例外,我们随后再讨论)。
Powered by ScribeFire.