15325@qq.com
|
2.0/chapter03/#43 |
2009-10-22 12:15:59
|
它仅仅返回一个HttpResponse对象,这个对象包含了文本“Hello world”。
|
|
15325@qq.com
|
2.0/chapter03/#45 |
2009-10-22 12:16:35
|
这里主要讲的是:
|
|
15325@qq.com
|
2.0/chapter03/#46 |
2009-10-22 12:21:11
|
一个视图就是Python的一个函数。这个函数第一个参数的类型是HttpRequest,它返回一个HttpResponse实例。为了使一个Python的函数成为一个Django可识别的视图,它必须满足以下两个条件:
|
|
15325@qq.com
|
2.0/chapter03/#46 |
2009-10-22 12:21:59
|
一个视图就是Python的一个函数。这个函数第一个参数的类型是HttpRequest;它返回一个HttpResponse实例。为了使一个Python的函数成为一个Django可识别的视图,它必须满足这两个条件。
|
|
15325@qq.com
|
2.0/chapter03/#40 |
2009-10-22 12:22:46
|
在下一小节(Your First URLconf),将告诉你Django是如何找到这个函数的。
|
|
15325@qq.com
|
2.0/chapter03/#51 |
2009-10-22 12:25:22
|
现在,如果你再运行:python manage.py runserver,你还将看到Django的欢迎页面,而看不到我们刚才写的Hello world显示页面。
|
|
15325@qq.com
|
2.0/chapter03/#52 |
2009-10-22 12:30:40
|
那是因为我们的mysite项目还对hello视图一无所知。我们需要通过一个详细描述的URL来显式的告诉它并且激活这个视图。
|
|
KataDoc360
|
2.0/chapter03/#64 |
2009-10-22 13:49:06
|
默认的URLconf包含了一些被注释起来的Django中常用的功能,仅仅只需去掉这些注释就可以开启这些功能.
|
|
KataDoc360
|
2.0/chapter03/#65 |
2009-10-22 13:51:59
|
下面是URLconf中忽略被注释的行的实际内容
|
|
KataDoc360
|
2.0/chapter03/#65 |
2009-10-22 13:52:51
|
下面是URLconf中忽略被注释的行后的实际内容
|
|
KataDoc360
|
2.0/chapter03/#82 |
2009-10-22 13:58:24
|
如果想在URLconf中加入URL和view,只需增加映射URL模式和view功能的Python tuple即可.
|
|
KataDoc360
|
2.0/chapter03/#83 |
2009-10-22 13:59:42
|
这里演示如何添加view中hello功能.
|
|
KataDoc360
|
2.0/chapter03/#83 |
2009-10-22 14:00:03
|
这里演示如何添加view中hello功能.
|
|
15325@qq.com
|
2.0/chapter03/#53 |
2009-10-22 14:17:01
|
(继续我们刚才类似发布静态HTML文件的例子。现在我们已经创建了HTML文件,但还没有把它上传至服务器的目录。)为了绑定视图函数和URL,我们使用URLconf。
|
|
15325@qq.com
|
2.0/chapter03/#58 |
2009-10-22 14:19:14
|
例如,当用户访问/foo/时,调用视图函数foo_view(),这个视图函数存在于Python模块文件view.py中。
|
|
15325@qq.com
|
2.0/chapter03/#68 |
2009-10-22 14:21:24
|
让我们逐行解释一下代码:
|
|
15325@qq.com
|
2.0/chapter03/#61 |
2009-10-22 14:24:25
|
默认的urls.py会像下面这个样子:
|
|
15325@qq.com
|
2.0/chapter03/#70 |
2009-10-22 14:26:39
|
第一行导入django.conf.urls.defaults下的所有模块,它们是Django URLconf的基本构造。
|
|
15325@qq.com
|
2.0/chapter03/#71 |
2009-10-22 14:27:44
|
这包含了一个patterns函数。
|
|
15325@qq.com
|
2.0/chapter03/#74 |
2009-10-22 14:29:19
|
(这个字符串可以被用来表示一个视图函数的通用前缀。具体我们将在第八章里面介绍。)
|
|
15325@qq.com
|
2.0/chapter03/#79 |
2009-10-22 14:44:13
|
(注:那是上一节中Django怎么知道显示欢迎页面的原因。
|
|
15325@qq.com
|
2.0/chapter03/#86 |
2009-10-22 14:46:27
|
请留意:为了简洁,我们移除了注释代码。
|
|
15325@qq.com
|
2.0/chapter03/#87 |
2009-10-22 14:47:12
|
如果你喜欢的话,你可以保留那些行。)
|
|
15325@qq.com
|
2.0/chapter03/#92 |
2009-10-22 14:52:32
|
(这假设mysite/views.py在你的Python搜索路径上。关于搜索路径的解释,请参照下文。)
|
|
15325@qq.com
|
2.0/chapter03/#94 |
2009-10-22 15:09:18
|
接下来,我们为urlpatterns加上一行:
('^hello/$', hello),
这行被称作URLpattern,它是一个Python的元组。元组中第一个元素是模式匹配字符串(正则表达式);第二个元素是那个模式将使用的视图函数。
|
|
mitnk
|
2.0/chapter07/#60 |
2009-10-22 15:10:37
|
注意,Header信息的完整列表取决于用户所发送的Header信息和服务器端设置的Header信息。
|
|
15325@qq.com
|
2.0/chapter03/#105 |
2009-10-22 15:11:43
|
如果你想看Python搜索路径的值,运行Python交互解释器,然后输入:
|
|
mitnk
|
2.0/chapter07/#61 |
2009-10-22 15:11:44
|
这个字典中几个常见的键值是:
|
|
mitnk
|
2.0/chapter07/#61 |
2009-10-22 15:12:04
|
这个字典中几个常见的键值有:
|
|
15325@qq.com
|
2.0/chapter03/#111 |
2009-10-22 15:13:57
|
讨论一下URLpattern的语法是值得的,因为它不是显而易见的。
|
|
mitnk
|
2.0/chapter07/#72 |
2009-10-22 15:14:31
|
注意,request.META 是一个普通的Python字典,因此当你试图访问一个不存在的键时,会触发一个KeyError异常。
|
|
mitnk
|
2.0/chapter07/#72 |
2009-10-22 15:14:58
|
注意,因为 request.META 是一个普通的Python字典,因此当你试图访问一个不存在的键时,会触发一个KeyError异常。
|
|
15325@qq.com
|
2.0/chapter03/#112 |
2009-10-22 15:15:22
|
虽然我们想匹配地址/hello/,但是模式看上去与这有点差别:
|
|
15325@qq.com
|
2.0/chapter03/#112 |
2009-10-22 15:15:35
|
虽然我们想匹配地址/hello/,但是模式看上去与这有点差别。
|
|
15325@qq.com
|
2.0/chapter03/#113 |
2009-10-22 15:15:54
|
这就是为什么:
|
|
15325@qq.com
|
2.0/chapter03/#115 |
2009-10-22 15:20:05
|
Django在检查URLpatterns前,移除每一个申请的URL开头的斜杠(/)。
|
|
mitnk
|
2.0/chapter07/#73 |
2009-10-22 15:23:55
|
(HTTP header信息是由用户的浏览器所提交的、不应该给予信任的“额外”数据,因此你总是应该好好设计你的应用以便当一个特定的Header数据不存在时,给出一个优雅的回应。)你应该用 try/except 语句,或者用Python字典的 get() 方法来处理这些“可能不存在的键”:
|
|
mitnk
|
2.0/chapter07/#76 |
2009-10-22 15:26:34
|
我们鼓励你动手写一个简单的view函数来显示 request.META 的所有数据,这样你就知道里面有什么了。
|
|
15325@qq.com
|
2.0/chapter03/#116 |
2009-10-22 15:26:53
|
这意味着我们为/hello/写URL模式不用包含斜杠(/)。(刚开始,这样可能看起来不直观,但这样的要求简化了许多工作,如URL模式内嵌,我们将在第八章谈及。)
|
|
15325@qq.com
|
2.0/chapter03/#115 |
2009-10-22 15:27:12
|
Django在检查URL模式前,移除每一个申请的URL开头的斜杠(/)。
|
|
mitnk
|
2.0/chapter07/#77 |
2009-10-22 15:27:14
|
这个view函数可能是这样的:
|
|
15325@qq.com
|
2.0/chapter03/#118 |
2009-10-22 15:29:20
|
模式包含了一个尖号(^)和一个美元符号($)。这些都是正则表达式符号,并且有特定的含义:
|
|
mitnk
|
2.0/chapter07/#80 |
2009-10-22 15:35:27
|
做为一个练习,看你自己能不能把上面这个view函数改用Django模板系统来实现,而不是上面这样来手动输入HTML代码。
|
|
newfish
|
2.0/chapter10/#1 |
2009-10-22 15:39:53
|
|
高级数据模型
|
mitnk
|
2.0/chapter07/#81 |
2009-10-22 15:41:39
|
也可以试着把前面提到的 request.path 方法或 HttpRequest 对象的其它方法加进去。
|
|
newfish
|
2.0/chapter10/#4 |
2009-10-22 15:42:12
|
在第5章里,我们介绍了Django的数据层如何定义数据模型以及如何使用数据库API来创建、检索、更新以及删除记录
|
|
newfish
|
2.0/chapter10/#1 |
2009-10-22 15:42:27
|
高级数据模型
|
|
mitnk
|
2.0/chapter07/#83 |
2009-10-22 15:43:21
|
提交的数据信息
|
|
15325@qq.com
|
2.0/chapter03/#122 |
2009-10-22 15:44:25
|
如果我们用尾部不是$的模式'^hello/',那么任何以/hello/开头的URL将会匹配,例如:/hello/foo 和/hello/bar,而不仅仅是/hello/。类似地,如果我们忽略了尖号(^),即'hello/$',那么任何以hello/结尾的URL将会匹配,例如:/foo/bar/hello/。如果我们简单使用hello/,即没有^开头和$结尾,那么任何包含hello/的URL将会匹配,如:/foo/hello/bar。因此,我们使用这两个符号以确保只有/hello/匹配,不多也不少。
|
|
newfish
|
2.0/chapter10/#5 |
2009-10-22 15:44:39
|
在这章里,我们将向你介绍Django在这方面的一些更高级功能
|
|