• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Django中路由系统的详解(代码示例)

python 搞代码 4年前 (2022-01-09) 15次浏览 已收录 0个评论

本篇文章给大家带来的内容是关于Django中路由系统的详解(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

Django的路由系统

URL配置(URL.conf)就像Django所支撑网站的目录,它的本质是URL与要为该URL调用的视图函数之间的映射表.

我们就是以这种方式告诉Django,遇到哪个URL的时候,要对应执行哪个函数.

URLconf配置

基本格式:

from django.conf.urls import urlurlpatterns = {        url(正则表达式,views视图,参数,别名),}

示例:

from django.conf.urls importfrom . import viewsurlparterns = {        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_detall),}

参数说明:

正则表达式:一个正则表达式字符串

views视图:一个可调用对象,通常为一个视图函数

参数:可选的要传递给视图函数的默认参数(字典形式)

别名:一个可选的name参数

注意:

Django 2.0版本中的路由系统是下面的写法:(官方文档):

from django.urls import path,re_pathurlpatterns = [    path('articles/2003/', views.special_case_2003),    path('articles/<int:year>/', views.year_archive),    path('articles/<int:year>/<int:month>/', views.month_archive),    path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail),]

2.0版本的re_path和1.11版本的url是一样的用法.

正则表达式详解

基本配置

from django.conf.urls import urlfrom . import viewsurlpatterns = [        url(r'^articles/2003/$',views.special_case_2003),        url(r'^articles/([0-9]{4})/$',views.year_archive),        url(r'^article/([0-9]{4})/([0-9]{2})/$',views.month_archive),        url(r'^article/([0-9]{4})/([0-9]{2})/([0-9]+)',views.article_detail),]

注意事项:

1.urlpatterns中的元素按照书写顺序从上往下逐一匹配正则表达式,一旦匹配成功则不再继续.

2.若要从URL中捕获一个值,只需要在它周围放置一对圆括号(分组匹配).

3.不需要添加一个前导的反斜杠2,因为每个URL都有,例如,应该是^articles而不是^/articles.

4.每个正则表达式前面的'r'是可选的但是建议加上.

补充说明:

# 是否开启URL访问地址后面不为/跳转至带有/的路径的配置项APPEND_SLASH=True. # 其作用就是在网址结尾加'/'.

其效果就是:

我们定义了urls.py:

from django.conf.urls import urlfrom app01 import viewsurlpatterns = [        url(r'^blog/$',views.blog)]

访问http://www.example本文来源gaodaimacom搞#^代%!码&网(.com/blog 时,默认将网址自动转换为 http://www.example/com/blog/

如果在settings.py中设置了APPEND_SLASH-False,此时我们再请求http://www.example.com/blog时就会提示找不到页面.

分组命名匹配

上面的示例使用简单的正则表达式分组匹配(通过圆括号)来捕获URL中的值并以位置参数形式传递给视图.

在更高级的用法中,可以使用分组命名匹配的正则表达式组来捕获URL中的值并以关键字参数形式传递给视图.


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Django中路由系统的详解(代码示例)

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址