Django内置的url转换器

在写项目中,我们有时候需要规定url传递的参数的种类,这个时候我们就需要用到Django中内置的url转换器了。

编写测试代码:

在项目中的app中的views.py中写入一下代码:

from django.http import HttpResponse

def student_detail(request,student_id):
    text = "该学生的学号是:%s" % student_id
    return HttpResponse(text)

然后在urls.py中写入映射:

from django.urls import path
from book import views

urlpatterns = [
	path('student/<int:student_id>',views.student),
]

再网址中输入一下代码测试

http://127.0.0.1:8000/student/1

效果就自行查看了。
而当我们最后面的参数传入不是一个数字的时候,即输入网址时最后面不是一个int型变量时,我们将访问不到页面的。

Django中除了int还有其他的一些类型转换

我们在urls.py中导入

from django.urls import converters

然后按住ctrl键,单击converters。就会进入到Django中convserters.py这个文件中
Django内置的url转换器
我们可以看到这个文件中有五个类,所以Django中内置的转换器有5种,
Django内置的url转换器

IntConverter类

Django内置的url转换器

regex = '[0-9]+'

[0-9] 就是只能0到9的中的整形数字
+ 表示1个或多个

StringConverter类(没有使用转换器的时候默认转换器)

Django内置的url转换器

regex = '[^/]+'

[^] 表示除了后面的东西都可以,即 [^/] 除了 ‘/’ 的都可以

UUIDConverter类

Django内置的url转换器

regex = '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'

[0-9a-f] 表示只能是0到9之间的任意整形数字和a-f 之间的字母,{8} 表示只能有8个这样的字母或者数字。- 即指定了这个字符,必须使用它,整个字符窜的意思就是8个[0-9a-f],后面用一个"-"连接,后面的以此类推

UUID是什么?

SlugConverter类

Django内置的url转换器

regex = '[-a-zA-Z0-9_]'

上面代码的意思是由 == -或a-z或A-Z或0-9或_ == 一个或多个组成的字符窜。

PathConverter类

Django内置的url转换器

regex = '.+'

‘.’ 表示任意字符,所以path可以传递任何字符串,符号等等。

总结

1. str:除了斜杠/以外所有的字符都是可以的。

2. int:只有是一个或者多个的阿拉伯数字。

3. path:所有的字符都是满足的。

4. uuid:只有满足uuid形式的字符串才行。

5. slug:英文中的横杆或者英文字符或者阿拉伯数字或者下划线才满足。