django url path 区别

django url 匹配是使用自定义模块 正则匹配,

匹配规则:

  • 1、主URL开始地方不要加/
  • 2、主URL后面地方要加/
  • 3、组件(App)的URL前面不要加/
  • 4、主URL后面不要加$
  • 5、组件(App)后面要加$

获取值需要在正则表达式中使用小括号,分为两种方式:

  • 位置参数

url(r'^delete(\d+)/$',views.show_arg),

def show_arg(request,id):
    return HttpResponse('show arg %s'%id)

  • 关键字参数

url(r'^delete(?P<id>\d+)/$',views.show_arg),

def show_arg(request,id):
    return HttpResponse('show id: %s'%id)

Django2中path调用的是python第三方模块或框架

url路由基础

1、在settings.py文件中有一个ROOT_URLCONF设置,设置的是在访问网址时通过哪一个url文件去匹配所请求的网址

2、path参数的使用方法path('blog/<str:string>/') 简单了很多,就是尖括号,前边是str代表参数的类型,后面代表参数的名称

path参数类型:   

 

捕获url中的参数需要用到尖括号<> 指定尖括号中的值类型比如<int:a><str:link>这个转换器还有许多类型比如:

int 匹配0和正整数

str 匹配任何空字符串但不包括/

slug 可理解为注释 匹配任何ascii码包括连接线和下划线

uuid 匹配一个uuid对象(该对象必须包括破折号—,所有字母必须小写)

path 匹配所有的字符串 包括/(意思就是path前边和后边的所有)

自定义path转换器


其实就是写一个类,并包含下面的成员和属性:

类属性regex:一个字符串形式的正则表达式属性;
to_python(self, value) 方法:一个用来将匹配到的字符串转换为你想要的那个数据类型,并传递给视图函数。如果转换失败,它必须弹出ValueError异常;
to_url(self, value)方法:将Python数据类型转换为一段url的方法,上面方法的反向操作。
例如,新建一个converters.py文件,与urlconf同目录,写个下面的类:

class FourDigitYearConverter:
    regex = '[0-9]{4}'

    def to_python(self, value):
        return int(value)

    def to_url(self, value):
        return '%04d' % value
写完类后,在URLconf 中注册,并使用它,如下所示,注册了一个yyyy:

from django.urls import register_converter, path

from . import converters, views

register_converter(converters.FourDigitYearConverter, 'yyyy')

urlpatterns = [
    path('articles/2003/', views.special_case_2003),
    path('articles/<yyyy:year>/', views.year_archive),
    ...
]

猜你喜欢

转载自blog.csdn.net/weixin_37989267/article/details/88284710
今日推荐