- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
The Django Book
About | Comment help | Contact us | Errata | Buy the print version on A
已完成 131段 共有 131段 完成度 100% | 中英文对照 | 英文 | 中文 | 上一章 | 目 录 | 下一章 | 翻译 |
第三章:动态网页基础
前一章中,我们解释了如何建立一个 Django 项目并启动 Django 开发服务器。当然,那个网站实际并没有干什么有用的事情,它所做的只是显示 It worked! 消息。让我们来做些改变。本章将介绍如何使用 Django 创建动态网页。
第一份视图:动态内容
我们的第一个目标是创建一个显示当前日期和时间的网页。这是一个不错的 动态 网页范例,因为该页面的内容不是静态的。相反,其内容是随着计算(本例中是对当前时间的计算)的结果而变化的。这个简单的范例既不涉及数据库,也不需要任何用户输入,仅输出服务器的内部时钟。
我们将编写一个 视图函数 以创建该页面。所谓的视图函数(或 视图 ),只不过是一个接受 Web 请求并返回 Web 响应的 Python 函数。实际上,该响应可以是一份网页的 HTML 内容、一次重定向、一条 404 错误、一份 XML 文档、一幅图片,或其它任何东西。视图本身包含返回该响应所需的任意逻辑。该段代码可以随意放置,只要在 Python 的路径设置中就可以了。没有其它要求——也可以说是没有任何奇特之处。为了给这些代码一个 存身之处 ,让我们在上一章所创建的 mysite 目录中新建一份名为 views.py 的文件。
以下是一个以 HTML 方式返回当前的日期与时间的视图 (view),:
from django.http import HttpResponse
import datetime
def current_datetime(request):
now = datetime.datetime.now()
html = htmlbodyIt is now %s./body/html % now
return HttpResponse(html)
我们逐行逐句地分析一遍这段代码:
首先,我们从 django.http 模块导入(import) HttpResponse 类。参阅附录 H 了解更多关于 HttpRequest 和 HttpResponse 的细节。
然后我们从 Python 标准库(Python 自带的实用模块集合)中导入(import) datetime 模块。 datetime 模块包含几个处理日期和时间的函数(functions)和类(classes),其中就包括返回当前时间的函数。
接下来,我们定义了一个叫做 current_datetime 的函数。这就是所谓的视图函数(view function)。每个视图函数都以一个 HttpRequest 对象为第一个参数,该参数通常命名为 request 。
注意视图函数的名称并不重要;并不一定非得以某种特定的方式命名才能让 Django 识别它。此处,我们称之为 current_datetime ,只是因为该名字明确地指出了它的功能,而它也可以被命名为 super_duper_awesome_current_time 或者其它同样莫名其妙的名字。Django 并不关心其名字。下一节将解释 Django 如何查找该函数。
函数中的第一行代码计算当前日期和时间,并以 datetime.datetime 对象的形式保存为局部变量 now 。
函数的第二行代码用 Python 的格式化字符串(format-string)功能构造了一段 HTML 响应。字符串里面的 %s 是占位符,字符串之后的百分号表示使用变量 now 的值替换 %s 。(是的,这段 HTML 不合法,但我们只不过是想让范例尽量保持简短而已。)
最后,该视图返回一个包含所生成响应的 HttpResponse 对象。每个视图函数都负责返回一个 HttpResponse 对象。(也有例外,但是我们稍后才会接触到。)
Django 时区 (Time Zone)
Django 包含一个默认为 America/Chicago 的 TIME_ZONE 设置。这可能不是你所居住的时区,因此你可以在 settings.py 文件中修改它。请参阅附录 E 了解更多细节。
将 URL 映射到视图
那么概括起来,该视图函数返回了包含当前日期和时间的一段 HTML 页面。但是如何告诉 Django 使用这段代码呢?这就是 URLconfs 粉墨登场的地方了。
URLconf 就
文档评论(0)