其他分享
首页 > 其他分享> > path()和re_path()用法&区别

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