html获取url后面的参数_Django正则URL匹配实现流程解析_python

一、引子

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

d2f8a39daf62e55a0b2d926ae13712c1.png

这样url 变成类似 今天我们来学习,类似 这样的URL

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

二、开搞栗子

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

   动态页面的栗子

    views 代码:


info_dic={
  1:{"name":"zhangsan","email":"zhangsan@","age":22},
  2:{"name":"lisi","email":"lisi@","age":27},
  3:{"name":"wangwu","email":"wangwu@","age":29},
  4:{"name":"laoliu","email":"laoliu@","age":30},
  5:{"name":"chenpi","email":"chenpi@","age":32},
}

def index(request):
  return render(request,"",{"info_dic":info_dic})


def detail(request):
  nid=("nid")
  print(nid,type(nid))
  info=(int(nid))
  print(info)
  return render(request,"",{"info":info})

    urls

74f630f43e5f735d1ec37e83ff8fc873.png

  前端,,


<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
  <h1>用户信息</h1>

  <ul>
    {% for k,v in info_dic.items %}
      <li><a target="_blank" href="/detail/?nid={{ k }}" rel="external nofollow" >{{  }}</a></li>
    {% endfor %}

  </ul>
</body>
</html>

  前端,detail


<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
  <h1>用户详细信息</h1>

  <ul>
    <li>name:{{  }}</li>
    <li>email:{{  }}</li>
    <li>age:{{  }}</li>
  </ul>
</body>
</html>

  结果:

87b7dee054621446bb49b32fb0a6ba4e.png

ca4f70745a2d337b209fa0e2ef8af5bc.png

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

  urls

babf3b1fa6267b3ccff9a0d4f39b54ca.png

  views ,

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

9d17ff386dfdec6f102a5eeedb9c3cf2.png

  结果

eb19720c3e776f277508903368bd5e7b.png

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

  下面再搞一个栗子验证

57f0535a1f9ef759f2e3fd45f96538a2.png

19da3d93026fa6af912ec6ec39b48897.png

8eab4fba0a42e935f200cf4b43c4edb3.png

00b1c7dfc40e5a9ba58607e3562031c5.png

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

3d6846adb0e273454f880eb044e1d954.png

三、分组传参

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

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

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

8a358333abe044c630f9543a9bbf366d.png

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

0170a449b0a2795cce2e2948ff9f4c4a.png

四、总结

路由系统:URL

  • 普通url:re_path('^index/',),re_path('^home/',())
  • 顺序传参:re_path(r'^detail-(\d+)-(\d+).html/',),这个用*args接收
  • 关键字传参:re_path(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html/',),这个用**kwargs接收,推荐使用这个

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值