Django学习之自定义转化器与路由层总结

本文总结了Django中自定义path转化器的创建和注册方法,以及路由层的关键知识点,包括正则匹配路径减少代码量,有名分组的使用,路由分发提高代码组织性,反向解析简化路径引用,名称空间解决别名冲突,以及Django 2的path优化点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1>path转化器

    之前介绍的str、int、path等若不够用的情况下,我们也可以自己定义一个转化器

    可以直接就在first_pro项目文件下面新建一个converter.py文件,专门存放自定义的path转化器

    

    urls.py改写如下,注意,自定义的转换器一定要用django的register_converter进行注册,注册的时候也要指定

    别名,就是path中调用时的函数名称,如下

    

    

    

2>路由层总结

    基于之前的章节,把路由层(path分发)一些基本的东西都学完了,稍作梳理如下

    --->通过django 1的re_path,可以写正则匹配路径,让一大堆类型相同的path都简写成一个正则匹配的path

        大大的减少了代码量如果要从path中取值,就在它周围加上括号(),取值之后,对应的处理函数就要写

        参数来接收这个值。


    --->有名分组:可以使用命名的正则表达式组来捕获URL 中的值并以关键字参数传递给视图,就是在正则匹配项

    前面,加上?P<name>的方式为这个值取个别名,类似python的关键字参数,取名之后,传参就必须“指名道姓”了,

    处理函数的参数就必须是这个别名,不能是别的,可以打乱位置,否则会报错。


    --->路由分发:当urls.py的path越来越多,后期管理就尤为不便,于是引入了路由分发功能,简言之,就是在每个应用

    下面增加自己的urls.py文件,用来存在本应用相关的path,项目urls.py就存放一些主页/一级菜单等等的path,其他的

    通过include函数做分发,这样可以提升代码/path的层级关系,后期管理更方便。


    --->反向解析:从一个登陆验证的功能,引入反向解析的概念,之前登陆页面表单提交,action部分是写死的path路径,

    当我主urls.py的path变化之后,得找到这些引用的地方一个一个的去改,着实麻烦且易出错,反向解析就是先给主

    urls.py的path定义个别名,其他地方通过特定的格式引用这个别名就行了,这样主urls.py的path不管怎么变,其他引用的

    地方都不必再改变或操心这些事。因为你别名不变,那么,引用的时候就能指到这个(最新的)path。


    --->名称空间,通过反向解析别名重名的问题,引入名称空间,类似于如果有两个不一样的app下面都取了“张三”代指

    一个path,而这个别名是全局性的,反向解析时就会去找,找到一个便返回,就自始至终只能找到一个“张三”的问题,

    名称空间相当于给每个“张三”再加个标识,比如这是“房间1的张三”,那是“房间2的张三”,也就是限定别名的作

    用域,这样,反向解析就能找到对应的/正确的哪个“张三”。


    --->Django 2的path,相比1版本的优化点,列举了两个,一是取值形式,之前是(),现在是尖括号<>。

    二是取值的类型转换,之前取回来的值,一些看起是int的值,其实类型是str,需要再函数里面手动转换,

    现在直接在path里面,增加转换器,实现一些字符的转换功能。

    然后就是本章的,若是这些django的内置转换器不够用,就自己定义转换器,引用前需注册,取别名,再通过别名调用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值