版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012111465/article/details/84929376
1、 转化器
可以通过
from django.urls import converters
引入转换器,或查看对应的有哪些转换器 。
2.1 整型int转换器
控制参数类型,比如,控制出版社的id为整型 。
在douAPI项目APP为douBook的views.py中:
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
# def book_info(request):
# return HttpResponse("图书详情")
# def book_info_detail(request,book_id):
# # 从数据库中拿book_id,省略
# your_book_id = 'your book id is :{book_id}'.format(book_id = book_id)
# return HttpResponse(your_book_id)
# 注意book_author_detail函数与book_info_detail(request,book_id)的区别,前者的除了request参数写在括号内,其余不写,在函数体内部体现
# def book_author_detail(request):
# # 从数据库中拿id
# author_id = request.GET.get('id') # 或者author_id = request.GET['id']
# content = "Author's id of the book is : {input_id}".format(input_id = author_id)
# return HttpResponse(content)
def book_publisher_id(request,publisher_id):
content = "Publisher's id of the book is : {input_id}".format(input_id = publisher_id)
return HttpResponse(content)
在douAPI项目下的urls.py中:
from django.urls import path
from douBook import views
urlpatterns = [
# path('douBook/', views.book_info),
# # 注意:参数<book_id>必须与APP为douBook下的views.py中book_info_detail函数的参数book_id保持一致!!!
# path('douBook/<book_id>/', views.book_info_detail),
# 注意:通过查询字符串的形式传参,即GET请求方法,不需要加<>,author_id部分也可以随意写,比如写成Auth_id
# path('douBook/author/', views.book_author_detail),
path('douBook/<int:publisher_id>/', views.book_publisher_id),
]
当输入整数时,结果如下:
当输入非整数时,结果会报404错误:
2.2 str转换器
除了/
其余都可以作为str类型,默认时str转换器 。
2.3 uuid转换器
uuid转换器具有唯一性,只满足uuid.uuid4()
类型的 。
import uuid
print(uuid.uuid4())
# output: d4d16dd7-5b81-42f8-9c2a-397c2e193ad3
在douAPI项目APP为douBook的views.py中:
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
# def book_info(request):
# return HttpResponse("图书详情")
# def book_info_detail(request,book_id):
# # 从数据库中拿book_id,省略
# your_book_id = 'your book id is :{book_id}'.format(book_id = book_id)
# return HttpResponse(your_book_id)
# 注意book_author_detail函数与book_info_detail(request,book_id)的区别,前者的除了request参数写在括号内,其余不写,在函数体内部体现
# def book_author_detail(request):
# # 从数据库中拿id
# author_id = request.GET.get('id') # 或者author_id = request.GET['id']
# content = "Author's id of the book is : {input_id}".format(input_id = author_id)
# return HttpResponse(content)
def book_publisher_id(request,publisher_id):
content = "Publisher's id of the book is : {input_id}".format(input_id = publisher_id)
return HttpResponse(content)
在douAPI项目下的urls.py中:
from django.urls import path
from douBook import views
urlpatterns = [
# path('douBook/', views.book_info),
# # 注意:参数<book_id>必须与APP为douBook下的views.py中book_info_detail函数的参数book_id保持一致!!!
# path('douBook/<book_id>/', views.book_info_detail),
# 注意:通过查询字符串的形式传参,即GET请求方法,不需要加<>,author_id部分也可以随意写,比如写成Auth_id
# path('douBook/author/', views.book_author_detail),
# path('douBook/<int:publisher_id>/', views.book_publisher_id),
path('douBook/<uuid:publisher_id>/', views.book_publisher_id),
]
当随意输入一个字符串时,结果报404错误:
当将上面生成的uuid输入时,结果如下:
2.4 slug转换器
该转换器满足:regex = '[-a-zA-Z0-9]'
即:数字、大小写字母、-满足,其余不行 。
2.5 path转换器
上面谈及str转换器不能有/
而path转换器是可以包含任意字符的,包括/
。