Django中的路由管理 urls.py
Django中的路由管理 urls.py
1、普通路由
path(router, view , kwargs, name)
- router : 定义路由,路由在定义的时候,不能以 / 开头
- view : 对应的是一个视图函数, 函数在定义的时候,要求必须提供request参数,必须返回response
- kwargs : 给视图传递额外的参数,格式是一个字典
- name : 给路由起一个名字、可以实现反向解析
2、参数路由
`path('detail/<id>', view)`, id 默认的类型是 str
可以使用类型转换器,转换参数的类型
django 中 内置的 类型转换器
- str: 匹配 除 / 之外的所有字符串
- int: 只能匹配数字
- path:匹配除换行符之外的所有字符串
- slug: 只能匹配 字母、数字、下划线、中划线 组成的字符串
- uuid: 只能匹配 UUID格式的字符串
django 中 自定义 类型转换器
- 新建 converters.py 文件
- 编写一个类
class YYYYConverter:
regex = "(19|20)\d{2}"
def to_python(self, value):
return int(value)
def to_url(self, value):
return str(value)
- 在
urls.py
中注册类型转换器
from django.urls.converters import register_converter
from . import converters
register_converter( converters.YYYYConverter , 'yyyy' )
-
在路由管理中使用 自定义的类型转换器
path('<yyyy:year>', ...)
3、正则路由
如果使用正则路由,则不能使用 path 函数
要想使用正则路由 ,则需要使用 url 函数 或者 re_path 函数
django.urls import re_path
django.conf.urls import url
url(r"正则表达式", 函数)
一般匹配简单的操作,复杂的操作,推荐使用
url('index/(?P<id>[0-9]+)', view)
4、分布式路由