urlpatterns = patterns('', (r'^hello/$', 'mysite.views.hello'), (r'^time/$', 'mysite.views.current_datetime'), (r'^time/plus/(\d{1,2})/$', 'mysite.views.hours_ahead'), (r'^tag/(\w+)/$', 'weblog.views.tag'), )写成:
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'), )
def home(request, year='', month='01'):则访问的URL可以写成:
url(r'^(\d{4})/(\d{2})$', 'hello.views.home')
url(r'^(?P<year>\d{4})/(?P<month>\d{2})$', 'hello.views.home')或者
url(r'^(?P<month>\d{2})/(?P<year>\d{4})$', 'hello.views.home')相对于第二点来说,优点很明显,不会混乱参数赋值顺序。
url(r'^/$', 'hello.views.home',{'year':2013,'month':09})这个又有什么用呢?来看:
# urls.py from django.conf.urls.defaults import * from mysite import views urlpatterns = patterns('', (r'^events/$', views.event_list), (r'^blog/entries/$', views.entry_list), )
# views.py from django.shortcuts import render_to_response from mysite.models import Event, BlogEntry def event_list(request): obj_list = Event.objects.all() return render_to_response('mysite/event_list.html', {'event_list': obj_list}) def entry_list(request): obj_list = BlogEntry.objects.all() return render_to_response('mysite/blogentry_list.html', {'entry_list': obj_list})
# urls.py from django.conf.urls.defaults import * from mysite import models, views urlpatterns = patterns('', (r'^events/$', views.object_list, {'model': models.Event}), (r'^blog/entries/$', views.object_list, {'model': models.BlogEntry}), )
# views.py from django.shortcuts import render_to_response def object_list(request, model): obj_list = model.objects.all() template_name = 'mysite/%s_list.html' % model.__name__.lower() return render_to_response(template_name, {'object_list': obj_list})
图来显示一系列的对象时,我们可以简简单单的重用这一个 object_list视图,而无须另外写视图代码了。
我的博客其他文章列表
http://my.oschina.net/helu