Django2.0——路由配置

URL配置就像是Django所支撑网站的目录,它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表。URL需要在urls.py进行配置,与其对应的视图函数写在views.py文件中。url的配置写在urlpatterns列表的path方法中,对于path的功能,下面一一讲解。

path

  • path方法第一个参数是url路由的配置,还可以通过<xx>/将输入指定url后多余的部分当作参数传给视图函数,视图函数同样要用一个参数xx来接收它。这里默认包含了一个转化器类型,是path转化器,将匹配任何字符串,当然也包括了 / 字符。也可自己指定格式如<int:xx>/,这是指定了一个整形转化器,即只匹配整形作为参数。

转化器的类型如下:

  1. str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式。
  2. int,匹配正整数,包含0。
  3. slug,匹配字母、数字以及横杠、下划线组成的字符串。
  4. uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
  5. path,匹配任何非空字符串,包含了路径分隔符

下面一个小例子,通过改写urls和views文件,配置一个hello路径,当输入这个路径,将调用对应的视图函数index。

这里在前面的例子下补充一个int转化器,捕获整形数据。

  • path的第二个参数一般是调用视图函数,当然还可能是利用include方法将不同app应用下的子路由在主路由中进行注册。include方法的参数是‘app_name.urls’。这里我们在项目下创建一个app名为music,并用include为子路由注册在主路由中,接着便能在app的urls文件和views文件中操作上述的方法。

在music应用下中分配子路由,并调用改app下的视图函数。

  • path的第三个可选参数是一个字典格式的参数,用于传递给视图函数,视图函数用关键字kwargs来接收。

当这个字典参数加到子路由注册中去,则这个字典对于其下的所有子路由都有效。

  • path第四个可选参数的关键字是name,name的作用是给url起了一个别名,然后可以在视图函数中利用reverse方法将url解析出来。name 常用在 templates, models, views ……中,也可起到页面重定向的功能。页面重定向的方法是redirect。

下面举个小例子,分别新建两个路由及其对应的两个视图函数,一个模拟旧网页,一个模拟新网页,现在要做的是输入旧网址时,能给我打开新的网页,这就是页面重定向。

给新网页的url分配一个name

re_path

如果上述的path方法中的转化器无法满足你的需求,可以考虑用万能的正则表达式,不过就不是用path方法了,而是re_path,在django2.0之前的版本,还没有自带的转化器,所以之前都是用正则来筛选捕获url中的参数的。

在Python正则表达式中,命名式分组语法为 (?P<name>pattern) ,其中name为名称, pattern为待匹配的模式。下面有个小例子,用大家熟悉的.*?来匹配除换行符外的任意字符。

posted @ 2018-11-29 18:29  龙~白  阅读(207)  评论(0编辑  收藏  举报