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()高,少一步解析路由地址
path()和re_path()用法&区别的更多相关文章
- Django2.0路由补充之path,re_path及视图层
以下是Django2.0版本 正则捕获到的参数都是字符串,所以如果函数需要用的其他数据类型,可以在函数中直接转换,也可以在路由中直接转换,如下: 下面实例是匹配整数,传过去的参数就是整数 from d ...
- order_by_、group_by_、having的用法区别
写于 2012-11-20 22:14 doc文档上. Having 这个是用在聚合函数的用法.当我们在用聚合函数的时候,一般都要用到GROUP BY 先进行分组,然后再进行聚合函数的运算.运算完后 ...
- html中的alt和title用法区别
html中的alt和title用法区别 首先明确一下概念,alt是html标签的属性,而title既是html标签,又是html属性.title标签这个不用多说,网页的标题就是写在<title& ...
- 转 SQL Union和SQL Union All两者用法区别效率以及与order by 和 group by配合问题
SQL Union和SQL Union All两者用法区别效率以及与order by 和 group by配合问题 SQL Union和SQL Union All用法 SQL UNION 操作符 UN ...
- OC .(点)与->(箭头)用法区别
这两天同学总是问OC里.和->的用法区别,当时回答的不是很好,周末查了一下,大概清楚了,在这里记录一笔. 先看这个例程 #import <Foundation/Foundation.h&g ...
- php中strstr、strrchr、substr、stristr四个函数用法区别
php中strstr.strrchr.substr.stristr四个函数用法区别: php中strstr strrchr substr stristr这四个字符串操作函数特别让人容易混淆,常用的是s ...
- mysql SELECT FOUND_ROWS()与COUNT(*)用法区别
在mysql中 FOUND_ROWS()与COUNT(*)都可以统计记录,如果都一样为什么会有两个这样的函数呢,下面我来介绍SELECT FOUND_ROWS()与COUNT(*)用法区别 SEL ...
- php中print_r、var_dump和var_export几个函数的用法区别
php中print_r.var_dump和var_export几个函数的用法区别
- Oracle中 (+)与left join 的用法区别
Oracle中 (+)与left join 的用法区别 原创 2017年01月11日 13:33:42 6648 select * from a,b where a.id=b.id(+); (+)写在 ...
随机推荐
- Solution -「ARC 104D」Multiset Mean
\(\mathcal{Description}\) Link. 读题时间≈想题时间,草.( 给定 \(N,K,M\),对于每个 \(x\in[1,N]\) 的整数 \(x\),统计多重集 ...
- 通讯录管理系统(C++)
前言 本程序采用VS2019开发实现 博主尽可能完善并健壮了程序功能,如有不理想之处,请加以指正,博主会在第一时间修改完善.原创不易,望"推荐","关注",&q ...
- mysql悬案 之 为什么用docker启动的mysql配置文件不生效
文章目录 故事前景 查看docker启动时挂载了哪些目录 使用相同镜像启动一个mysql 新建一个目录用来存放容器内的mysql配置文件 复制容器内的mysql配置文件到本地 查看mysql配置文件目 ...
- nginx 80端口强制转443
server { listen 80; server_name test.com; rewrite ^(.*)$ https://${server_name}$1 permanent; } serve ...
- Python数据分析 | Numpy与1维数组操作
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/33 本文地址:http://www.showmeai.tech/article-det ...
- DH密钥交换协议
密钥交换 密钥交换简单点来说就是允许两名用户在公开媒体上交换信息以生成"一致"的.可以共享的密钥.也就是由甲方产出一对密钥(公钥.私钥),乙方依照甲方公钥产生乙方密钥对(公钥.私钥 ...
- RFC2544背靠背测试——信而泰Renix测试软件实操
文章关键词:背靠背测试.合法最小帧间隙.缓存区结构.吞吐量测试. 背靠背测试背景: 随着网络规模的扩大,大量的路由更新消息.频繁的文件传输和数据备份等操作都会导致数据在一段时间内急剧增加,甚至达到该物 ...
- C语言qsort()函数的使用
C语言qsort()函数的使用 qsort()函数是 C 库中实现的快速排序算法,包含在 stdlib.h 头文件中,其时间复杂度为 O(nlogn).函数原型如下: void qsort(void ...
- netty系列之:EventExecutor,EventExecutorGroup和netty中的实现
目录 简介 EventExecutorGroup EventExecutor EventExecutorGroup在netty中的基本实现 EventExecutor在netty中的基本实现 总结 简 ...
- 浅谈cache
2021.9.22更新: <浅谈Cache Memory> http://blog.sina.com.cn/s/blog_6472c4cc0102dusv.html 为什么贴上这个链接呢, ...