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中使用成员运算符的示例
May 13 Python
python中zip()方法应用实例分析
Apr 16 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
Nov 15 Python
Python数据结构之栈、队列的实现代码分享
Dec 04 Python
基于Python在MacOS上安装robotframework-ride
Dec 28 Python
python绘制直方图和密度图的实例
Jul 08 Python
解决使用export_graphviz可视化树报错的问题
Aug 09 Python
使用OpenCV实现仿射变换—平移功能
Aug 29 Python
python小程序之4名牌手洗牌发牌问题解析
May 15 Python
13个Pandas实用技巧,助你提高开发效率
Aug 19 Python
python-图片流传输的思路及示例(url转换二维码)
Dec 21 Python
Python采集股票数据并制作可视化柱状图
Apr 04 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
使用 eAccelerator加速PHP代码的目的
2007/03/16 PHP
PHP 在线翻译函数代码
2009/05/07 PHP
PHP中执行cmd命令的方法
2014/10/11 PHP
Yii2 批量插入、更新数据实例
2017/03/15 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
Laravel学习教程之request validation的编写
2017/10/25 PHP
PHP输出Excel PHPExcel的方法
2018/07/26 PHP
js 获取中文拼音,Select自动匹配字母获取值的代码
2009/09/23 Javascript
jquery获取下拉列表的值为null的解决方法
2011/03/18 Javascript
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
开发 Internet Explorer 右键功能表(ContextMenu)
2013/07/03 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
获取中文字符串的实际长度代码
2014/06/05 Javascript
jQuery实现Tab选项卡切换效果简单演示
2015/11/23 Javascript
JavaScript匿名函数之模仿块级作用域
2015/12/12 Javascript
jquery实现无刷新验证码的简单实例
2016/05/19 Javascript
JavaScript的兼容性与调试技巧
2016/11/22 Javascript
webpack打包js文件及部署的实现方法
2017/12/18 Javascript
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
图文介绍Vue父组件向子组件传值
2018/02/17 Javascript
jQuery中复合选择器简单用法示例
2018/03/31 jQuery
vue3.0 CLI - 2.6 - 组件的复用入门教程
2018/09/14 Javascript
微信小程序实现锚点功能
2019/11/20 Javascript
Python制作刷网页流量工具
2017/04/23 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
2018/07/27 Python
解决pyinstaller打包pyqt5的问题
2019/01/08 Python
Python3删除排序数组中重复项的方法分析
2019/01/31 Python
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
Scrapy框架基本命令与settings.py设置
2020/02/06 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
css3中用animation的steps属性制作帧动画
2019/04/25 HTML / CSS
责任担保书范文
2014/05/21 职场文书
学校感恩教育活动总结
2014/07/07 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
辛亥革命观后感
2015/06/02 职场文书
西游记读书笔记
2015/06/25 职场文书