Django 01 Django中的路由系统分析

熊孩纸 阅读:201 2020-02-20 18:51:21 评论:0

简述

当一个请求来到时,Django首先会在项目目录下的urls.py下定义的urlpatterns(由Django.urls.path或Django.urls.re_path对象组成的列表)列表中查找路由规则,如果匹配到,Django就会执行与该条规则绑定的views视图函数,并将函数的返回值返回给客户端。如果发现与该条规则绑定的是include,Django就会到include制定的特定App目录下的urls.py中再开始匹配。如果出错或者没有匹配到路由规则,则返回404。

 

path(form Django.urls import path)

  path(route, view, kwargs=None, name=None)

  -route 为一个url规则

  -view 是该条路由要绑定的views视图函数的名称,此处也可以放置include("AppName.url")将该条路由分配到特定App下的urls.py中继续匹配

  -kwargs 额外参数,可以传递给views函数,其值必须为一个字典。如果此处定义了数据,那么views函数的参数列表中也要接收该参数

  -name url的命名

 

在url中捕获参数

  在url规则中使用·<变量名>`可以捕获到url中的值传递给视图(视图函数参数列表需要有对应接收)

  实例 path("/student/detail/<stu_id>", include("student.urls"))

  注意此处捕获的值是字符串

路径转换器

  使用方法<转换器 : 变量名> 例如<int : stu_id>

  常用的转换器

  -str 匹配除了‘/’路径分隔符之外的所有字符串

  -int 匹配任意整数

  -slug 匹配任意acsii字符

  -uuid 格式化id

  -path 匹配任意非空字符

 

re_path(route, view, kwargs=None, name=None)

url规则使用正则表达式

 

与URL重定向相关操作

  (from django. import reverse, redirect)

  根据url命名获取url

  url = reverse('UrlName')

  return redirect(url)

 

App命名(解决多个App当中会出现相同的url命名的问题)

  在App的url配置文件中定义app_name = 'AppName'

  如果定义过了AppName那么在重定向的过程中可以使用、

  return redirect(reverse("AppName : UrlName"))

标签:Python
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
排行榜
关注我们

扫一扫关注我们,了解最新精彩内容