标签:
一、在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‘), )
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‘)
标签:
原文地址:http://www.cnblogs.com/zhaopengcheng/p/5442013.html