Python框架django路由管理

django路由管理

  • 普通路由
  • 参数路由
  • 正则路由
  • 正则参数路由
  • 分布式路由

路由的定义

所有django的路由,都必须定义在 路由管理器 urls.py urlpatterns 列表中

在 urlpatterns 中,通过定义 路由 可以使用 path 函数

from django.urls import path


path(route,  view,  kwargs,  name)

  • route : 定义路由的地址、是一个 字符串,不能以 / 开头
  • view : 视图函数、是由 python的函数来充当的
  • kwargs: 是一个字典格式的数据、是给视图函数设置额外的参数,不常用
  • name : 定义路由的对应的名称、通过路由名称进行路由的反向解析找到对应的路由

普通路由

  • 普通路由、通过 path 来定义、route 是一个普通的字符串

参数路由

  • 参数路由、通过 path 函数来定义的,route 中包含 <key> 或者 <type:key> 占位符

type常见的类型

  • str : 默认值, str可以匹配除 / 之外的所有字符
  • int : 会将传入的值自动转为 int类型
  • slug: 可以匹配 由 数字、字母、下划线、和中划线 组成的字符串
  • path: 除换行符以外的所有字符
  • uuid: 匹配 uuid格式的字符串

自定义参数路由中的类型转换器

django 内置的所有类型转换器 都在 converters.py 中, 可以通过 CTRL + N 或者 shift + shift

    1. 在 django的核心包下、新建一个 converters.py (名字不是固定的、约定俗成), 代码如下
class YearConverter:

    regex = r'(19|20)\d{2}'

    def to_python(self, value):
        return int(value)

    def to_url(self, value):
        return str(value)

    1. 将自定义的类型转换器注册到 django 中
# 打开 django项目的 核心包 对应的 __init__.py 、完成自定义类型转换器的注册

from django.urls.converters import register_converter

from .converters import YearConverter

# 注册自定义的类型转换器
register_converter(YearConverter, "yyyy")

    1. 在 参数路由中使用自定义的 yyyy 转换器
urlpatterns = [
    ...
    path("query/<yyyy:year>", query, name="query")

]

猜你喜欢

转载自blog.csdn.net/qq_40679091/article/details/109130469