ySJ
|
2.0/chapter03/#335 |
2010-04-09 11:19:17
|
如果两段代码是松耦合的,那么其中任意一段代码的变动只会对另一段代码造成很小的或者根本不会造成影响。
|
|
ySJ
|
2.0/chapter03/#334 |
2010-04-09 11:16:49
|
<emphasis>松耦合</emphasis> 原则。简单的说,松耦合是一个重要的保证互换性的软件开发方法。
|
|
ySJ
|
2.0/chapter03/#327 |
2010-04-09 11:12:18
|
显示的日期与时间可能和实际的相差几个小时,这取决于你的机器。
|
|
ySJ
|
2.0/chapter03/#307 |
2010-04-09 11:09:54
|
字符串中的%s是占位符,字符串后面的百分号表示用它后面的变量now的值来代替%s。变量%s是一个datetime.datetime对象。它虽然不是一个字符串,但是%s(格式化字符串)会把它转换成字符串,如:2008-12-13
14:09:39.002731。这将使HTML的输出字符串变成:It is now 2008-12-13
14:09:39.002731。
|
|
ySJ
|
2.0/chapter03/#293 |
2010-04-09 11:07:03
|
正如我们的hello函数一样,这个函数也保存在views.py中。为了简洁,上面我们隐藏了hello函数。下面是完整的views.py文件内容:
|
|
ySJ
|
2.0/chapter03/#293 |
2010-04-09 11:06:55
|
正如我们的hello函数一样,这个函数也保存在views.py中。为了简洁,上面我们隐藏了hello函数。下面是完整的view.py文件内容:
|
|
ySJ
|
2.0/chapter03/#287 |
2010-04-09 11:04:58
|
哪些是Django特性代码。)
|
|
ySJ
|
2.0/chapter03/#280 |
2010-04-09 11:04:30
|
如果你对python很有经验,那肯定知道在python中需要利用datetime模块去计算时间。
|
|
ySJ
|
2.0/chapter03/#279 |
2010-04-09 11:03:58
|
计算当前日期和时间,并返回包含这些值的HttpResponse。
|
|
ySJ
|
2.0/chapter03/#276 |
2010-04-09 11:03:40
|
它仅仅比Helloworld稍微刺激一些,但它将演示一些新的概念。
|
|
ySJ
|
2.0/chapter03/#275 |
2010-04-09 11:02:46
|
这将是非常理想而简单的下一步,因为它不引入数据库或者任何用户的输入,仅仅是显示你的服务器的内部时钟.
|
|
ySJ
|
2.0/chapter03/#274 |
2010-04-09 11:01:36
|
第二个视图,我们将把更多动态的东西放在网页上,例如当前日期和时间。
|
|
ySJ
|
2.0/chapter03/#263 |
2010-04-09 10:59:04
|
Django把HttpResponse转换为一个合适的HTTP response, 以Web page的形式显示出来。
|
|
ySJ
|
2.0/chapter03/#249 |
2010-04-09 10:57:58
|
正如我们在第一个视图例子里面看到的,一个视图函数必须返回一个HttpResponse对象。 一旦视图函数执行完成,Django将完成剩余的工作,把Python对象转换成一个合适的带有HTTP头和body的Web Response(例如,网页内容)。
|
|
ySJ
|
2.0/chapter03/#239 |
2010-04-09 10:55:59
|
还记得我们运行django-admin.py startproject时创建的文件settings.py和urls.py吗?自动创建的settings.py包含一个ROOT_URLCONF配置用来指向自动产生的urls.py. 打开文件settings.py你将看到如下:
|
|
ySJ
|
2.0/chapter03/#237 |
2010-04-09 10:54:04
|
最重要的设置是ROOT_URLCONF,它将作为URLconf告诉Django在这个站点中哪些Python的模块将被用到。
|
|
ySJ
|
2.0/chapter03/#235 |
2010-04-09 10:52:58
|
一切都开始于<emphasis>settings</emphasis>文件。当你运行<literal>python manage.py
runserver</literal>,脚本将在<literal>manage.py</literal>所在的目录下查找名为<literal>setting.py</literal>的文件。这个文件包含了这个Django项目的所有配置信息,它们都是大写的:
|
|
ySJ
|
2.0/chapter03/#233 |
2010-04-09 10:49:25
|
具体地说,当你通过在浏览器里敲http://127.0.0.1:8000/hello/来访问Hello world消息的时候,Django在后台做了些什么呢?
|
|
ySJ
|
2.0/chapter03/#222 |
2010-04-09 10:47:33
|
在上一节提到,如果我们访问网站根目录<literal>http://127.0.0.1:8000/</literal>时将看到一个404错误的消息。Django并不会自动为网站根目录增加任何映射,这个URL并不特殊。
|
|
ySJ
|
2.0/chapter03/#222 |
2010-04-09 10:47:15
|
在上一节提到,如果我们访问网站根目录<literal>http://127.0.0.1:8000/</literal>时将看到一个404错误的消息。Django并不会自动为网站根目录增加任何映射,在任何情况下这个URL都不特殊。
|
|
ySJ
|
2.0/chapter03/#222 |
2010-04-09 10:45:31
|
在上一节提到,如果我们访问网站根目录<literal>http://127.0.0.1:8000/</literal>时将看到一个404错误的消息。Django不会为网站根目录增加任何东西,在任何情况下这个URL都不是特殊的
|
|
ySJ
|
2.0/chapter03/#183 |
2010-04-09 10:42:02
|
<literal>?</literal> |
|
ySJ
|
2.0/chapter03/#147 |
2010-04-09 10:38:13
|
Django URLconfs 允许你 使用任意的正则表达式来做强有力的URL映射,不过你实际上可能只需要使用很少的一 部分功能。
|
|
ySJ
|
2.0/chapter03/#142 |
2010-04-09 10:36:51
|
你已经创建了第一个Django的Web页面。
|
|
ySJ
|
2.0/chapter03/#138 |
2010-04-09 10:36:06
|
现在我们来测试修改好的 URLconf, 像第二章一样,运行命令<literal>python manage.py runserver</literal> 以启动服务器。 (如果你让它一直运行也可以。
|
|
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/#128 |
2010-04-09 10:29:53
|
然而,默认地,任何不匹配或尾部没有斜杠(/)的申请URL,将被重定向至尾部包含斜杠的相同URL。
|
|
ySJ
|
2.0/chapter03/#109 |
2010-04-09 10:11:59
|
(设置Python路径是<literal>manage.py</literal>脚本完成的工作之一。)
|
|
ySJ
|
2.0/chapter03/#108 |
2010-04-09 10:10:20
|
通常,你不必关心 Python 搜索路径的设置。Python 和 Django 会在后台自动帮你处理好。
|
|
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/#86 |
2010-04-09 09:59:59
|
(请留意:为了简洁,我们移除了注释代码。
|
|
ySJ
|
2.0/chapter03/#82 |
2010-04-09 09:59:30
|
如果想在URLconf中加入URL和view,只需增加映射URL模式和view功能的Python 元组即可.
|
|
ySJ
|
2.0/chapter03/#80 |
2010-04-09 09:58:31
|
如果 URLconf 为空,Django 会认定你刚创建好新项目,因此也就显示那个欢迎信息。)
|
|
ySJ
|
2.0/chapter03/#80 |
2010-04-09 09:57:55
|
如果 URLconf 为空,Django 会认定你才创建好新项目,因此也就显示那种信息。)
|
|
ySJ
|
2.0/chapter03/#76 |
2010-04-09 09:56:44
|
当前应该注意是 <literal>urlpatterns</literal> 变量, Django 期望能从 URLconf 模块中找到它。
|
|
ySJ
|
2.0/chapter03/#64 |
2010-04-09 09:51:11
|
默认的URLconf包含了一些被注释起来的Django常用的功能,只需去掉这些注释就可以开启这些功能.
|
|
ySJ
|
2.0/chapter03/#58 |
2010-04-09 09:48:36
|
例如,当用户访问/foo/时,调用视图函数foo_view(),这个视图函数存在于Python模块文件views.py中。
|
|
ySJ
|
2.0/chapter03/#56 |
2010-04-09 09:47:31
|
它本质上是 URL 模式以及要为该 URL 模式调用的视图函数之间的映射表。
|
|
ySJ
|
2.0/chapter03/#55 |
2010-04-09 09:46:11
|
<emphasis> URLconf</emphasis> 就好像是基于Django的Web站点的一张内容表。
|
|
ySJ
|
2.0/chapter03/#52 |
2010-04-09 09:43:28
|
那是因为我们的mysite项目还对hello视图一无所知。我们需要明确地告诉Django: 我们要用一个特定的URL来激活这个视图。
|
|
ySJ
|
2.0/chapter03/#51 |
2010-04-09 09:41:26
|
现在,如果你再运行:python manage.py runserver,你还将看到Django的欢迎页面,而不是我们刚才写的Hello world视图。
|
|
ySJ
|
2.0/chapter03/#46 |
2010-04-09 09:38:17
|
视图不过是一个Python函数,它采用HttpRequest作为它的第一个参数并且返回一个HttpResponse的实例。为了使一个Python函数成为一个Django视图,它必须干这俩件事。
|
|
ySJ
|
2.0/chapter03/#43 |
2010-04-09 09:35:09
|
它仅仅返回一个HttpResponse对象,此处用文本“Hello world”做了个实例。
|
|
ySJ
|
2.0/chapter03/#39 |
2010-04-09 09:29:11
|
在这里我们把它命名为:hello,是因为这个名称清晰的显示了视图的用途。当然,你也可以叫它:hello_wonderful_beautiful_world,或其它类似的啰嗦形式。
|
|
oncepolice
|
2.0/chapter03/#30 |
2010-04-09 09:24:45
|
首先,我们从 <literal>django.http</literal> 模块中导入(import) <literal>HttpResponse</literal> 类。
|
|
oncepolice
|
2.0/chapter03/#22 |
2010-04-09 09:22:20
|
请留意,Django对于<literal>views.py</literal> 的文件名没有特别的要求,它并不在乎这个文件叫什么。但是作为约定(有利于其他开发者读懂你的代码),把它命名成views.py确实是个好主意。
|
|
oncepolice
|
2.0/chapter03/#22 |
2010-04-09 09:21:57
|
请留意,Django对于<literal>views.py</literal> 的文件名没有特别的要求,它并不在乎这个文件叫什么。但是作为约定(有利于其他开发者读懂你的代码),把它命名成view.py确实是个好主意。
|
|
oncepolice
|
2.0/chapter03/#21 |
2010-04-09 09:20:02
|
在上一章使用<literal>django-admin.py startproject</literal>生成的<literal>mysite</literal>文件夹中,创建一个叫做<literal>views.py</literal>的空文件。这一Python模块将包含本章中我们使用的视图。
|
|
oncepolice
|
2.0/chapter03/#17 |
2010-04-09 09:17:27
|
页面的内容由<emphasis>view function(视图函数)</emphasis> 产生,URL定义在 <emphasis>URLconf</emphasis> 中。首先,我们先写一个Hello world视图函数。
|
|
oncepolice
|
2.0/chapter03/#16 |
2010-04-09 09:13:44
|
使用Django的话,你会用不同的方法来说明这两件事。
|
|