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中使用pyhook实现键盘监控的例子
Jul 18 Python
Python MySQLdb Linux下安装笔记
May 09 Python
约瑟夫问题的Python和C++求解方法
Aug 20 Python
python里使用正则表达式的组嵌套实例详解
Oct 24 Python
python 获取字符串MD5值方法
May 29 Python
Python实现将Excel转换成xml的方法示例
Aug 25 Python
用Python实现数据的透视表的方法
Nov 16 Python
PySide和PyQt加载ui文件的两种方法
Feb 27 Python
详解小白之KMP算法及python实现
Apr 04 Python
python使用html2text库实现从HTML转markdown的方法详解
Feb 21 Python
python实现扑克牌交互式界面发牌程序
Apr 22 Python
Python使用Beautiful Soup(BS4)库解析HTML和XML
Jun 05 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代码
2010/02/16 PHP
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
Javascript学习笔记7 原型链的原理
2010/01/11 Javascript
中止javascript执行的方法
2014/02/14 Javascript
JS 获取浏览器和屏幕宽高等信息代码
2014/03/31 Javascript
基于jquery实现的仿优酷图片轮播特效代码
2016/01/13 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
2016/11/09 Javascript
利用node.js实现反向代理的方法详解
2017/07/24 Javascript
JS实现运动缓冲效果的封装函数示例
2018/02/18 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
2018/03/05 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
[52:09]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第二场
2014/05/26 DOTA
Python 创建子进程模块subprocess详解
2015/04/08 Python
Python每天必学之bytes字节
2016/01/28 Python
Python的GUI框架PySide的安装配置教程
2016/02/16 Python
Python读取txt内容写入xls格式excel中的方法
2018/10/11 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
python 进程 进程池 进程间通信实现解析
2019/08/23 Python
django之从html页面表单获取输入的数据实例
2020/03/16 Python
python 安装impala包步骤
2020/03/28 Python
Vs Code中8个好用的python 扩展插件
2020/10/12 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
CSS3实现多样的边框效果
2018/05/04 HTML / CSS
HTML5中的postMessage API基本使用教程
2016/05/20 HTML / CSS
新加坡鲜花速递/新加坡网上花店:Ferns N Petals
2020/08/29 全球购物
Linux开机引导的步骤是什么
2014/02/26 面试题
JSF的标签库有哪些
2012/04/27 面试题
电子商务自荐书范文
2014/01/04 职场文书
中学教师自我鉴定
2014/02/07 职场文书
教师个人自我鉴定
2014/02/08 职场文书
电力安全事故反思
2014/04/27 职场文书
区政府领导班子个人对照检查材料
2014/09/25 职场文书
小学数学教学反思范文
2016/02/16 职场文书
新学期新寄语,献给新生们!
2019/11/15 职场文书
导游词之西安骊山
2019/12/20 职场文书
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js