Django URL 分发

来源:互联网 发布:再来 网络歌手 编辑:程序博客网 时间:2024/05/10 16:54

- url  =>  views函数调用(位置参数)

urlpatterns = [
    url(r'^articles/2003/$', views.special_case_2003),
    url(r'^articles/([0-9]{4})/$', views.year_archive),
    url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
    url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
]

/articles/2005/03/     =>  views.month_archive(request, '2005', '03')
/articles/2005/3/      =>  error: 需要匹配两位整数
/articles/2003/        =>  views.special_case_2003(request)
/articles/2003         =>  error: 需要以/结束 
/articles/2003/03/03/  =>  views.article_detail(request, '2003', '03', '03')

- url  =>  views函数调用(命名参数 (?P<name>pattern))

urlpatterns = [
    url(r'^articles/2003/$', views.special_case_2003),
    url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
    url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),
    url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$', views.article_detail),
]

/articles/2005/03/     =>  views.month_archive(request, year='2005', month='03')
/articles/2003/03/03/  =>  views.article_detail(request, year='2003', month='03', day='03')

- url中所有捕获的参数以string形式传递

- 在view中为url设置默认参数
urlpatterns = [
    url(r'^blog/$', views.page),
    url(r'^blog/page(?P<num>[0-9]+)/$', views.page),
]

# blog/views.py
def page(request, num="1"):  # 为第一个匹配模式设置默认值

- 传递额外参数到view函数
urlpatterns = [
    url(r'^blog/(?P<year>[0-9]{4})/$', views.year_archive, {'foo': 'bar'}),
]

/blog/2005/        =>  views.year_archive(request, year='2005', foo='bar')

- Django快捷函数
render(request, template_name, context=None, context_instance=_context_instance_undefined, content_type=None, 
status=None, current_app=_current_app_undefined, dirs=_dirs_undefined, using=None)

render_to_response(template_name, context=None, context_instance=_context_instance_undefined, content_type=None, 
status=None, dirs=_dirs_undefined, using=None)

redirect(to, permanent=False, *args, **kwargs)

get_object_or_404(klass, *args, **kwargs)

get_list_or_404(klass, *args, **kwargs)


0 0
原创粉丝点击