您的位置:首页 > 编程语言 > Go语言

Django URL 分发

2016-03-15 17:36 225 查看
- 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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: