Django基于正则表达式的URL(2)

本文介绍了 Django 中 URL 路由系统的使用方法,包括如何通过正则表达式来匹配 URL 并传递参数,以及如何利用正则表达式的分组特性来灵活地调整视图函数中参数的顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 关于正则的说明

url(r'^detail-(\d+)-(\d+).html',views.detail), 当客户端输入 127.0.0.1:8000/detail-2-9.html时,Django默认可以得到3个参数,分别是request,

-(\d+)-,-(\d+)-。 所以定义detail函数的时候,需要把这3个参数都接收,否则会报错。当然了是严格按照顺序来写/获取到的。

def detail(request,nid,uid):

  print(nid,uid)

 

 

 

2.默认情况下是严格按照顺序来获取得。但是如果想调整形式参数的时候,就会影响到整个程序。基于此,Django还支持正则表达式的分组。

把第1个匹配的赋值给nid,把第2个匹配的赋值给uid.

url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html',views.detail),

分组写的好处是,下列2个函数就无区别了。形式参数的位置不会影响代码的值。

def detail(request,nid,uid)

def detail(request,uid,nid)

 

3. args:接收的是元组

   kwargs:接收的是字典类型的。

 

4.本节笔记

一,路由系统,URL
	1.一个URL对应一个函数或者对应一个类
	url(r'^index/',views.index),url(r'^home/',views.Home.as_view()),
	2.一类URL对应一个函数或类
	url(r'^detail-(\d+)-(\d+).html',views.index), 严格按照形式参数的位置给它传递的。
	3.一类URL对应一个函数或类(用正则表达式的方法来做)推荐使用的。
	url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html',views.index), 形式参数的位置不影响值。
	传递参数的时候,是按照nid=1,uid=9,的样式传递的。
	
	def detail(request,*args,**kwargs) #args元组,kwargs字典。
	如果是以url(r'^detail-(\d+)-(\d+).html',views.index)的形式传递的话,则都传到args里面了。因为传递形式是:1,2的格式。
	如果是以url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html',views.index)的形式的话,都传到kwargs里。因为传递形式是:nid=1,uid=2的格式

 

 

转载于:https://www.cnblogs.com/momo8238/p/7513767.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值