首页 技术 正文
技术 2022年11月15日
0 收藏 425 点赞 4,119 浏览 1961 个字

django 正则URL 匹配

 转自:https://www.cnblogs.com/chenkeven/articles/9305260.html

一、引子

  在day17 作业中,我们查看主机详细信息的时候,是通过 在url 中拼接,传参数。urls 中匹配  path(“detail/”,views.detail)

【转】django 正则URL 匹配

这样url 变成类似  http://127.0.0.1:8000/detail/?nid=2  今天我们来学习,类似 http://127.0.0.1:8000/detail-3.html 这样的URL

据说,以前我们使用的方式 ,在seo 时候算是动态页面,后面这种方式算静态页面。可能在做搜索优化的时候有好处吧。

二、开搞栗子

  忽略掉数据库,先在 views 新建一个用户字典

  2.1 动态页面的栗子

    views 代码:

  

【转】django 正则URL 匹配

 1 info_dic={
2 1:{"name":"zhangsan","email":"zhangsan@163.com","age":22},
3 2:{"name":"lisi","email":"lisi@163.com","age":27},
4 3:{"name":"wangwu","email":"wangwu@163.com","age":29},
5 4:{"name":"laoliu","email":"laoliu@163.com","age":30},
6 5:{"name":"chenpi","email":"chenpi@163.com","age":32},
7 }
8
9 def index(request):
10 return render(request,"index.html",{"info_dic":info_dic})
11
12
13 def detail(request):
14 nid=request.GET.get("nid")
15 print(nid,type(nid))
16 info=info_dic.get(int(nid))
17 print(info)
18 return render(request,"detail.html",{"info":info})

【转】django 正则URL 匹配

    urls

  【转】django 正则URL 匹配

  前端,index.html,

【转】django 正则URL 匹配

 1 <!DOCTYPE html>
2 <html>
3 <head lang="en">
4 <meta charset="UTF-8">
5 <title></title>
6 </head>
7 <body>
8 <h1>用户信息</h1>
9
10 <ul>
11 {% for k,v in info_dic.items %}
12 <li><a target="_blank" href="/detail/?nid={{ k }}" rel="external nofollow" >{{ v.name }}</a></li>
13 {% endfor %}
14
15 </ul>
16
17
18
19 </body>
20 </html>

【转】django 正则URL 匹配

  前端,detail

【转】django 正则URL 匹配

 1 <!DOCTYPE html>
2 <html>
3 <head lang="en">
4 <meta charset="UTF-8">
5 <title></title>
6 </head>
7 <body>
8 <h1>用户详细信息</h1>
9
10 <ul>
11 <li>name:{{ info.name }}</li>
12 <li>email:{{ info.email }}</li>
13 <li>age:{{ info.age }}</li>
14 </ul>
15 </body>
16 </html>

【转】django 正则URL 匹配

  结果:

【转】django 正则URL 匹配

【转】django 正则URL 匹配

2.2 下面用 正则表达式来 搞URL 匹配,静态页面,

  urls

【转】django 正则URL 匹配

  views ,

直接在函数中传参数,nid 形式参数。不像之前需要自己到 reques.method 中去取

 【转】django 正则URL 匹配

  结果

【转】django 正则URL 匹配

上面的栗子中,我们得知参数是通过形参传递的,类似定义函数的形参数,

  下面再搞一个栗子验证

【转】django 正则URL 匹配

【转】django 正则URL 匹配

【转】django 正则URL 匹配

【转】django 正则URL 匹配

参数位置变换后 ,获取的数值也变了

【转】django 正则URL 匹配

三、分组传参

  在上面的栗子中,我们知道如果不分组,那么参数就是类似函数的位置参数,靠天吃饭,

很显然,这样不方便我们在实际的使用中去调用。那么使用关键字参数呢,在URL 匹配中就需要分组

下面搞栗子,变换nid,uid 位置之后,打印的结果是一样的。

【转】django 正则URL 匹配

位置参数可以在 *arg 中获取,关键字参数可以在 **kwargs 中获取

【转】django 正则URL 匹配

四、总结

路由系统:URL

  1. 普通url:re_path(‘^index/’,view.index),re_path(‘^home/’,view.Home.as_view())
  2. 顺序传参:re_path(r’^detail-(\d+)-(\d+).html/’,views.detail),这个用*args接收
  3. 关键字传参:re_path(r’^detail-(?P<nid>\d+)-(?P<uid>\d+).html/’,views.detail),这个用**kwargs接收,推荐使用这个
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,964
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,486
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,331
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,114
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,747
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,781