在写项目中,我们有时候需要规定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中内置的转换器有5种,
IntConverter类
regex = '[0-9]+'
[0-9] 就是只能0到9的中的整形数字
+ 表示1个或多个
StringConverter类(没有使用转换器的时候默认转换器)
regex = '[^/]+'
[^] 表示除了后面的东西都可以,即 [^/] 除了 ‘/’ 的都可以
UUIDConverter类
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类
regex = '[-a-zA-Z0-9_]'
上面代码的意思是由 == -或a-z或A-Z或0-9或_ == 一个或多个组成的字符窜。
PathConverter类
regex = '.+'
‘.’ 表示任意字符,所以path可以传递任何字符串,符号等等。