宸犀

导航

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、分布式路由


posted on 2019-11-13 13:30  宸犀  阅读(339)  评论(0编辑  收藏  举报