path()和re_path()用法&区别
作者:互联网
path()
参数列表:
参数1:字符串类型,用来匹配请求路径
参数2:指定路径所对应的视图函数名
参数3:关键字参数 实际用的不多
参数4...
# urls.py
# 创建子应用的路由文件
from django.urls import path
from day2.views import *
urlpatterns = [
# 参数1:字符串类型,用来匹配请求路径
# 参数2:指定路径所对应的视图函数名
path('hello/', day_2_hello),
path('world/', day_2_hello),
# 转换器的写法,用来匹配url中变量
path('abc/<name>', name),
# 限定变量的类型为int类型
path('aaa/<int:money>', money),
# 参数3:关键字参数 实际用的不多
path('kw_test', kw_test, kwargs={'language': 'python', 'teacher': 'coco', 'age': 18}),
# 参数 name参数 : 给路由字符串加了个别名。name='hello_name'叫反向解析,可以得到路由地址
path('name_test', name_test, name='hello_name'),
# 组合使用上面的参数
path('all_together/<int:money>/have', all_together, kwargs={'abc': 123}, name='all_together')
]
#views.py
from django.http import HttpResponse
# 函数用来接收用户请求进行处理
# request:django封装好的对象,在调用该函数day_2_hello(request对象)
from django.urls import reverse
def day_2_hello(request):
# pass
# 返回浏览器数据:需要使用response对象
return HttpResponse('你好')
def name(request,name):
return HttpResponse('浏览器的地址栏name是{}'.format(name))
def money(request,money):
return HttpResponse('浏览器的地址栏money是{}'.format(money))
def kw_test(request,**kwargs):
return HttpResponse('{}'.format(kwargs))
def name_test(request):
# 接收到的不是helloname,而是当前路由地址
return HttpResponse('name_test的路由是:{}'.format(reverse('hello_name')))
def all_together(request,money,**kwargs):
print(money,kwargs)
return HttpResponse("测试一下")
re_path()
# urls.py
from django.urls import re_path, path
from day3.views import *
urlpatterns = [
# re_path('正则模式', 视图函数名,name='路由别名'),
# 正则模式:(?P<name>正则表达式)
re_path('^get_age/(?P<age>\d{1,2}$)', get_age),
# path('1.html',goods),
# path('2.html',goods2),
# 需求:根据不同的商品id展示不同的页面
re_path('^(?P<id>\d+)\.html', goods),
# 手机 智能手机 1 老人机 ....
# 华为p50 --->10
# 127.0.0.1:8000/day3/1/50.html
# path('1/50.html',goods2),
re_path('^(?P<catid>\d+)/(?P<goodsid>\d+)\.html$', goods2),
path('get_request', get_request)
]
#views.py
from django.http import HttpResponse
# Create your views here.
def get_age(request,age):
return HttpResponse('get_age函数的age是={}'.format(age))
def goods(request,id):
return HttpResponse('商品{}的详情页'.format(id))
def goods2(request,catid,goodsid):
return HttpResponse('分类id={},商品id={}'.format(catid,goodsid))
区别:
path()效率比re_path()高,少一步解析路由地址
标签:return,name,request,用法,re,path,HttpResponse,def 来源: https://www.cnblogs.com/gsxm/p/16062503.html