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


Posted in Python onJanuary 28, 2018

前言

利用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文件,其他的就差不多了。

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

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 相关文章推荐
python类型强制转换long to int的代码
Feb 10 Python
Python获取系统默认字符编码的方法
Jun 04 Python
python实现批量按比例缩放图片效果
Mar 30 Python
基于Django URL传参 FORM表单传数据 get post的用法实例
May 28 Python
python+pandas+时间、日期以及时间序列处理方法
Jul 10 Python
PyTorch 1.0 正式版已经发布了
Dec 13 Python
对python中的try、except、finally 执行顺序详解
Feb 18 Python
Python内置类型性能分析过程实例
Jan 29 Python
如何完美的建立一个python项目
Oct 09 Python
matplotlib教程——强大的python作图工具库
Oct 15 Python
Pandas搭配lambda组合使用详解
Jan 22 Python
python画条形图的具体代码
Apr 20 Python
python通过百度地图API获取某地址的经纬度详解
Jan 28 #Python
python中的随机函数小结
Jan 27 #Python
python中的随机函数random的用法示例
Jan 27 #Python
Python闭包之返回函数的函数用法示例
Jan 27 #Python
详解如何利用Cython为Python代码加速
Jan 27 #Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
Jan 27 #Python
Python实现的栈(Stack)
Jan 26 #Python
You might like
一个很方便的 XML 类!!原创的噢
2006/10/09 PHP
PHP Smarty生成EXCEL文档的代码
2008/08/23 PHP
PHP chmod 函数与批量修改文件目录权限
2010/05/10 PHP
PHP获取一年中每个星期的开始和结束日期的方法
2015/02/12 PHP
WampServer搭建php环境时遇到的问题汇总
2015/07/23 PHP
在laravel框架中使用model层的方法
2019/10/08 PHP
window.open的页面如何刷新(父页面)上层页面
2012/12/28 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
2014/03/10 Javascript
javascript使用smipleChart实现简单图表
2015/01/02 Javascript
8个超实用的jQuery功能代码分享
2015/01/08 Javascript
JS+CSS实现下拉列表框美化效果(3款)
2015/08/15 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
2016/08/05 Javascript
Vue.js 实现微信公众号菜单编辑器功能(二)
2018/05/08 Javascript
vue底部加载更多的实例代码
2018/06/29 Javascript
Puppeteer环境搭建的详细步骤
2018/09/21 Javascript
玩转Koa之核心原理分析
2018/12/29 Javascript
js canvas实现5张图片合成一张图片
2019/07/15 Javascript
[14:00]DOTA2国际邀请赛史上最长大战 赛后专访B神
2013/08/10 DOTA
[04:09]显微镜下的DOTA2第十二期—NaVi美如画的团战
2014/06/23 DOTA
python基于urllib实现按照百度音乐分类下载mp3的方法
2015/05/25 Python
Python导入oracle数据的方法
2015/07/10 Python
Python随机生成带特殊字符的密码
2016/03/02 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
2019/07/02 Python
pytorch 常用线性函数详解
2020/01/15 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
Python通用唯一标识符uuid模块使用案例
2020/09/10 Python
CSS3贝塞尔曲线示例:创建链接悬停动画效果
2020/11/19 HTML / CSS
7 For All Mankind官网:美国加州洛杉矶的高级牛仔服装品牌
2018/12/20 全球购物
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
2012/10/29 面试题
数控专业毕业生求职信范文
2013/09/21 职场文书
护理专业毕业生自我鉴定
2013/10/08 职场文书
《少年王冕》教学反思
2014/04/11 职场文书
测量员岗位职责
2015/02/14 职场文书
大学生村官工作总结2015
2015/04/09 职场文书
工程部岗位职责范本
2015/04/11 职场文书
golang判断key是否在map中的代码
2021/04/24 Golang