我的Django学习笔记(最后更新2008-05-22) 不指定

root , 2008/05/22 16:13 , Python , 评论(0) , 阅读(6610) , Via 本站原创 | |
〖高级视图和URL配置〗
============================================================================
一、流线型化(Streamlining)函数导入
方式1:

方式2:

方式3:

二、使用命名组
无组命名:

有组命名:

例如,如果不带命名组,请求 /articles/2006/03/ 将会等于这样的函数调用:
month_archive(request, '2006', '03')
而带命名组,同样的请求就是这样的函数调用:
month_archive(request, year='2006', month='03')

三、匹配/组合算法

四、伪造捕捉到的URLconf值

五、通用视图
原视图:

通用视图:

六、提供视图配置选项
一个应用中比较常见的可供配置代码是模板名字:

捕捉值和额外参数之间的优先级:

(比如, /mydata/2/ 或者 /mydata/432432/ )都会作 id 设置为 3 对待,不管URL里面能捕捉到什么样的值。

七、缺省视图参数

八、特殊情况下的视图

我们要利用URLconf从顶向下的解析顺序这个特点。象 /auth/user/add/ 的请求将会被 user_add_stage 视图处理。尽管URL也匹配第二种模式,它会先匹配上面的模式。(这是短路逻辑。)

九、从URL中捕获文本的注意点
每个被捕获的参数将被作为纯Python字符串来发送,而不管正则表达式中的格式。举个例子,在这行URLConf中:
(r'^articles/(?P\d{4})/$', views.year_archive),
参数 year 是作为string传至 views.year_archive() ,而非integer,即使 \d{4} 将只匹配整数的字符串。
当你在写视图代码时记住这点很重要,许多Python内建的方法对于接受的对象的类型很讲究。很常见的错误时用字符串值而不是整数值来创建datetime.date对象:
错误:

正确:

十、包含(include)其他URLconf

*/weblog/2007/ :在第一个URLconf中,模式 r'^weblog/' 被匹配。因为它是一个 include() ,Django将截掉所有匹配的文本,在这里是 'weblog/' 。URL剩余的部分是 2007/\ , 将在 mysite.blog.urls ·这个URLconf的第一行中被匹配。
*/weblog//2007/ :在第一个URLconf中,模式 r'^weblog/' 被匹配。因为它是一个 include() ,Django将截掉所有匹配的文本,在这里是 'weblog/' 。URL剩余的部分是 /2007/ (开头有一个斜杠),将不会匹配``mysite.blog.urls`` 中的任何URLconf。
*/about/ : 这个匹配第一个URLconf中的``mysite.views.about``view。只是为了示范你可以混合``include()`` patterns和 non-include() patterns在一起使用。

十一、捕获的参数如何让和 include()协同工作

在这个例子中,被捕获的”username”变量将传递给被included 的 URLconf,因此,在那个被included 的 URLconf中的每一个view函数都将获得那个参数。

十二、额外的URLconf如何和include()协同工作
下面的两个URLconf在功能上是相等的。

第一个:

第二个
Tags:
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]