robert-zhou

django第四天

路由别名

1.路由别名:
给路由路径命名一个名字
url(r\'^login/$\',views.login,name = \'login\')
2.为什么要用路由别名
①当路由路径过长时,写起来会比较复杂,可以使用简短的别名,减少代码量
②当路由路径需要修改时,如果都是用路由路径的话,则扩展性较差,而使用别名来反向解析路由路径的话,只需要修改路由路径就ok了,扩展性高
3.如何用路由别名
在模板中.html文件
href = {% url \'路由别名\' 参数1,参数2...参数n%}
在重定向函数中
def login(request):
    url = reverse("路由别名")
    return redirect(url)    

名称空间

名称空间:当项目的应用较多时,别名可能存在相同的可能
此时可以定义名称空间,以保证查找的唯一性
如何用名称空间
主路由:
url(r\'^app01/\',include(\'app01.urls\',namespace=\'app01\'))
子路由:
    urlpatterns = [
        url(r\'^test/\',views.test,name ="test")
    ]
模板:
    {% url \'app01:test\' %}
视图函数:
    url = reverse(\'app01:test\')

2.x新特性

from django.urls import path,re_path
1.  2.x re_path的使用方式同1.x版本url
2.  path写的是绝对字符串,请求地址必须与路由地址完全匹配
3.  path拥有5个转换器:
    str:匹配除路径分隔符/外的字符串
    int:匹配自然数
    slug:匹配字母,数字,横杠及下划线组成的字符串
    uuid:匹配uuid形式的数据
    path:匹配任何字符串,包括路径分隔符/

自定义转换器

1.在应用文件夹下创建converter.py文件
2.在converter.py文件中创建自定义类
3.在类中定义regex 正则,
to_python方法
to_url方法
对于一些复杂或者复用的需要,可以定义自己的转化器。转化器是一个类或接口,它的要求有三点:
regex 类属性,字符串类型
to_python(self, value) 方法,value是由类属性 regex 所匹配到的字符串,返回具体的Python变量值,以供Django传递到对应的视图函数中。
to_url(self, value) 方法,和 to_python 相反,value是一个具体的Python变量值,返回其字符串,通常用于url反向引用。

class CVT185Phone:
    regex = \'185\d{8}\'
    def to_python(self, value):
        return int(value)
    def to_url(self, value):
        return \'%11d\' % value
4.在主路由下导入,生成转换器
from django.urls import register_converter
from app.converter import CVT185phone
register_converter(CVT185phone,\'phone185\')

path(\'page/<phone185:msg>/\',views.page,name="pages")

分类:

技术点:

相关文章:

  • 2021-09-11
  • 2022-12-23
  • 2021-06-29
  • 2021-08-08
  • 2021-10-05
  • 2021-10-29
  • 2021-06-25
  • 2022-12-23
猜你喜欢
  • 2021-05-24
  • 2022-02-26
  • 2022-12-23
  • 2022-12-23
  • 2021-11-19
  • 2021-10-17
  • 2021-04-21
相关资源
相似解决方案