Django 3.0应用开发详解
上QQ阅读APP看书,第一时间看更新

4.3 Django路由的关联概念

Django的路由使用有其特殊性,为此框架提供了多个概念用于辅助支持路由的使用,具体包含以下几个方面。

4.3.1 路由别名

路由别名是路由方法中特有的参数,用于给路由已有的url定义一个别名,使应用的其他模块能够通过该名称访问已定义的路由。

路由访问有两种形式:一种是在模板html页面通过模板标签url来调用,其形式如下:

{% url '路由别名' 参数1,参数2...参数n  %}

另一种是通过在视图方法中使用django.urls包内的reverse方法实现,其形式如下:

reverse('路由别名')

路由别名的引入增强了Django路由模式的扩展性,用户可以通过只修改路由路径的方式达到快速调整已有模块功能的目的。

4.3.2 路径转换器

路径转换器实质就是一些特殊的类,用于url参数的类型转化。默认情况下,Django框架提供了以下几种转换器。

  • str:匹配除路径分隔符“/”外的字符串,返回为string类型。该转换器为系统默认的转换形式。
  • int:匹配0或正整数,返回为int类型。
  • slug:匹配由字母、数字、横杠及下划线组成的字符串。
  • uuid:匹配uuid形式的字符串,该字符串必须包含连字符,并且字母必须为小写。
  • path:匹配任何非空字符串,包括路径分隔符“/”。

除了上述内置的转换器外,用户还可根据需要自定义转换器。自定义转换器除了需要包含regex变量属性来存放按照正则表达式定义的转换规则,还需要包含以下方法:

  • to_python(self, value)方法,其中value是由类属性regex所匹配到的字符串,该方法将匹配到的字符串进行转换后传递到对应的视图函数(view)中。
  • to_url(self, value)方法,该方法将匹配到的字符串进行转换后传递到对应的url字符串中。