Django的路由管理

Django-路由管理

django中的路由管理 是由 urls.py 中定义的
所有的路由 放置在 urls.py 中 urlpatterns 中

每一个路由在定义的时候,需要通过 路由函数来定义

路由函数 常见的由 path , url

path(route, view , kwargs, name) : 普通路由的定义
url(route, view , kwargs, name) : 支持正则表达式

  • route : 路由地址,请求地址, 不允许以 / 开头 ,是一个 字符串
  • view : 一个视图函数,由该函数完成 路由对应的业务处理
  • kwargs : 是一个字典, 是给 view 传递参数的 , 不是必传的
  • name : 路由的名字,不是必传的

路由的分类

  • 普通路由
    • 用 path 函数定义 ,route 是 一个普通的字符串
定义一个跳转到 登录页面的路由 

path("login", login, name="login")

  • 参数路由
    • 用 path 函数定义 , route 在定义路由的时候,使用 <[type:]key> 设置 参数路由
path("detail/<pk>", detail, name="detail")   pk 默认的类型是 str

在参数类型中, 支持 类型转换器

django 内置了5个 类型转换器 , converters.py

str  : 默认的,  不能匹配 /
int  : 代表整数
slug : 匹配 字符、数字、下划线、中划线组成的 字符串
uuid : 匹配 uuid格式的字符串
path : 匹配所有的字符串,包含 /

自定义类型转换器

  • 新建一个 converters.py
from django.urls.converters import IntConverter

class YearConverter(IntConverter):

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

  • urls.py所在的包下的 __init__.py 中注册 自定义类型转换器
from django.urls.converters import register_converter
from . import converters

register_converter(converters.YearConverter, "year")
  • 正则路由
    • 用 url 函数定义 , route 是一个 支持正则表达式的 字符串
from django.conf.urls import url

url('^$', view.index, name="index")

-- path("", views.index. name="index")

  • 正则参数路由

url(r'(?P<pk>\d+)', views.detail, name="detail")
  • 分布式路由
    • settings配置
    INSTALLED_APPS=[
        ...
        app_name,
    ]
    
urlpatterns=[
    url(r'app_name/', include('app_name.urls')),
]

反向路由解析

路由的反向解析是根据路有名找到路由

  • 模板中
{%url 'namespace:routename param' %}

- namespace : 命名空间
- routename : 路由名称
- param : 参数, 多个以 空格 分开
  • 在应用下的 urls中
app_name = ‘应用的名’
  • views 中
  • 从 django.urls 中引入 reverse,利用 reverse(“路由别名”) 反向解析:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值