码迷,mamicode.com
首页 > Web开发 > 详细

django1.8高级视图和URL配置读书笔记

时间:2016-04-28 11:58:15      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

一、在url配置中可以通过导入视图函数来将url模式和对应的函数对象进行映射,也可以通过字符串的形式进行映射。字符串包含应当是模块名、函数名的组合例如:

之前:

from mysite import views

urlpatterns = patterns(‘‘,
    (r^hello/$, views.hello),
    (r^time/$, views.current_datetime),
    (r^time/plus/(d{1,2})/$, views.hours_ahead),
)

现在:不用再导入模块

from django.conf.urls.defaults import *

urlpatterns = patterns(‘‘,
    (r^hello/$, mysite.views.hello),
    (r^time/$, mysite.views.current_datetime),
    (r^time/plus/(d{1,2})/$, mysite.views.hours_ahead),
)

2、在同一个app中,url对应的处理函数前面可能是相同的,这是可能会需要重复的输入相同的字符串。比如上面的‘mysite.views’,我们可以将它提取出来,放到第一个字符串

如:

from django.conf.urls.defaults import *

urlpatterns = patterns(mysite.views,
    (r^hello/$, hello),
    (r^time/$, current_datetime),
    (r^time/plus/(d{1,2})/$, hours_ahead),
)

django系统会自动帮我们用‘.’将这两个字符串连接起来。

注意:此时需要将包名、模块名、函数名都加上,才可以被搜索到。他会在系统环境设置的path变量中查找相应函数。

3、如果使用字符串形式来表示响应函数的话,可能遇到不同的前缀,也有相应的办法,就是用多patterns前缀来处理。

技术分享
from django.conf.urls.defaults import *

urlpatterns = patterns(mysite.views,
    (r^hello/$, hello),
    (r^time/$, current_datetime),
    (r^time/plus/(\d{1,2})/$, hours_ahead),
)

urlpatterns += patterns(weblog.views,
    (r^tag/(\w+)/$, tag),
)
View Code

pattens()函数返回的对象是可以相加的。

4、调试模式中的特例

from django.conf import settings
if settings.DEBUG:
    urlpatterns += patterns(‘‘,
        (r^debuginfo/$, views.debug),
    )

5、使用命名组(?P<name>pattern) 

例如:(r‘^articles/(?P<year>\d{4})/(?P<month>\d{2})/$‘, views.month_archive),访问 /articles/2006/03/ 会在函数中

month_archive(request, year=‘2006‘, month=‘03‘)

 

django1.8高级视图和URL配置读书笔记

标签:

原文地址:http://www.cnblogs.com/zhaopengcheng/p/5442013.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!