Django框架教程之正则表达式URL误区详解

yipeiwu_com5年前Python基础

前言

利用Django开发网站,可以设计出非常优美的url规则,如果url的匹配规则(包含正则表达式)组织得比较好,view的结构就会比较清晰,比较容易维护。但这其中可能会有一些误区,下面就来给大家总结下。

问题:

我学习的视频大概是2015年录的,里面用的Django版本比较老关于正则表达式URL这一块都是用的url(“url(r'^admin/', admin.site.urls),”)方法。而我自己练习的时候是下载的最新版本,而正则表达式URL用的确实path(“path('admin/', admin.site.urls),”)方法。刚开始一对以匹配的时候都能成功,就没太在意这个细节。

直到后面正则匹配多个时(path('detail-(\d+).html', views.detail),) ,总是报错“page not found”。我检查了好几遍,明明一模一样怎么就不行尼?其实看颜色就感觉有点不太对,但又不知道是什么原因。后来查了相关版本文档之后,终于找到解决的方法了!

下面附上相关代码:

1.这个是最重要的py文件,其他的就差不多了。

 

2.其他相关代码:

views.py

def detail(request,nid):
 # print(nid)
 # return HttpResponse(nid)
 detail_info = USER_DICT[nid]
 return render(request,'detail.html',{'detail_info':detail_info})

index.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
</head>
<body>
 <ul>
  {% for k,v in user_dict.items %}
   <li><a target="_blank" href="/detail-{{ k }}.html" rel="external nofollow" >{{ v.name }}</a></li>
  {% endfor %}
 </ul>
</body>
</html>

detail.py

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
</head>
<body>
 <h1>详细信息</h1>
 <h6>用户名:{{ detail_info.name }}</h6>
 <h6>邮箱:{{ detail_info.email }}</h6>
</body>
</html>

另外,URL要传递多个数据时候,严格按照顺序传递的,并且函数定义必须有相应个数的参数,当然可以利用万能参数接收任意个参加

普通情况下运用的正则表达式是:url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+)', views.detail),

而对应的detail函数的是这样的:def detail(request, *args, **kwargs):pass

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对【听图阁-专注于Python设计】的支持。

相关文章

使用Pandas对数据进行筛选和排序的实现

使用Pandas对数据进行筛选和排序的实现

筛选和排序是Excel中使用频率最多的功能,通过这个功能可以很方便的对数据表中的数据使用指定的条件进行筛选和计算,以获得需要的结果。在Pandas中通过.sort和.loc函数也可以实现...

python 实现对数据集的归一化的方法(0-1之间)

多数情况下,需要对数据集进行归一化处理,再对数据进行分析 #首先,引入两个库 ,numpy,sklearn from sklearn.preprocessing import Mi...

微信跳一跳小游戏python脚本

微信跳一跳小游戏python脚本

Python编写微信小游戏“跳一跳”的运行脚本,分享给大家。 更新了微信后发现了一款小游戏跳一跳,但是玩了一下午最高才达到200,每次差点破纪录后总是手抖就挂掉了,气的想要砸手机。闲来无...

python字典排序的方法

python字典排序的方法

python字典怎么排序? 定义一个字典类型 mydict = {2: '小路', 3: '黎明', 1: '郭富城', 4:'周董'} 可分别打印 key和value 看一下数据 按...

Python实现的堆排序算法原理与用法实例分析

Python实现的堆排序算法原理与用法实例分析

本文实例讲述了Python实现的堆排序算法。分享给大家供大家参考,具体如下: 堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满...