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访问sqlserver示例
Feb 10 Python
Python实现冒泡,插入,选择排序简单实例
Aug 18 Python
Python实现建立SSH连接的方法
Jun 03 Python
Python进程间通信用法实例
Jun 04 Python
python监控linux内存并写入mongodb(推荐)
Sep 11 Python
Python温度转换实例分析
Jan 17 Python
使用Python获取网段IP个数以及地址清单的方法
Nov 01 Python
Python实现EXCEL表格的排序功能示例
Jun 25 Python
对django的User模型和四种扩展/重写方法小结
Aug 17 Python
PyCharm无法引用自身项目解决方式
Feb 12 Python
关于Python Tkinter Button控件command传参问题的解决方式
Mar 04 Python
Python爬虫爬取全球疫情数据并存储到mysql数据库的步骤
Mar 29 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
深入PHP magic quotes的详解
2013/06/17 PHP
PHP抓屏函数实现屏幕快照代码分享
2014/01/02 PHP
php 魔术方法详解
2014/11/11 PHP
php自动给网址加上链接的方法
2015/06/02 PHP
PHP实现删除字符串中任何字符的函数
2015/08/11 PHP
php获取图片信息的方法详解
2015/12/10 PHP
360搜索引擎自动收录php改写方案
2018/04/28 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
php的instanceof和判断闭包Closure操作示例
2020/01/26 PHP
JavaScript 异步调用框架 (Part 4 - 链式调用)
2009/08/04 Javascript
jquery ajax方式直接提交整个表单核心代码
2013/08/15 Javascript
jquery配合css简单实现返回顶部效果
2013/09/30 Javascript
js函数名与form表单元素同名冲突的问题
2014/03/07 Javascript
js生成动态表格并为每个单元格添加单击事件的方法
2014/04/14 Javascript
从零学jquery之如何使用回调函数
2014/05/16 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
Vue.js实现在下拉列表区域外点击即可关闭下拉列表的功能(自定义下拉列表)
2017/05/30 Javascript
JS请求servlet功能示例
2017/06/01 Javascript
node基于puppeteer模拟登录抓取页面的实现
2018/05/09 Javascript
JS实现生成由字母与数字组合的随机字符串功能详解
2018/05/25 Javascript
vue devtools的安装与使用教程
2018/08/08 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
JavaScript Array对象基本方法详解
2019/09/03 Javascript
vue插槽slot的简单理解与用法实例分析
2020/03/14 Javascript
vue中移动端调取本地的复制的文本方式
2020/07/18 Javascript
[01:22:29]真视界:2019年国际邀请赛总决赛
2020/01/29 DOTA
python解析发往本机的数据包示例 (解析数据包)
2014/01/16 Python
分析用Python脚本关闭文件操作的机制
2015/06/28 Python
在Django中同时使用多个配置文件的方法
2015/07/22 Python
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
2013/01/30 HTML / CSS
主题党日活动总结
2014/07/08 职场文书
党建目标管理责任书
2014/07/25 职场文书
oracle索引总结
2021/09/25 Oracle
HTML5+CSS+JavaScript实现捉虫小游戏设计和实现
2021/10/16 HTML / CSS