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 平衡二叉树实现代码示例
Jul 07 Python
Python图像处理PIL各模块详细介绍(推荐)
Jul 17 Python
Django视图扩展类知识点详解
Oct 25 Python
Python 依赖库太多了该如何管理
Nov 08 Python
在Sublime Editor中配置Python环境的详细教程
May 03 Python
python datetime时间格式的相互转换问题
Jun 11 Python
如何解决python多种版本冲突问题
Oct 13 Python
Python爬虫实现selenium处理iframe作用域问题
Jan 27 Python
python opencv实现图像配准与比较
Feb 09 Python
Pytorch实现WGAN用于动漫头像生成
Mar 04 Python
Pytorch中Softmax与LogSigmoid的对比分析
Jun 05 Python
python双向链表实例详解
May 25 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实现utf-8转unicode函数分享
2015/01/06 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
2016/12/02 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
JS 统计时间
2021/03/09 Javascript
得到文本框选中的文字,动态插入文字的js代码
2007/03/07 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
2011/10/11 Javascript
ext combobox动态加载数据库数据(附前后台)
2014/06/17 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
2014/10/17 Javascript
JavaScript 模块化编程(笔记)
2015/04/08 Javascript
JavaScript节点及列表操作实例小结
2015/08/05 Javascript
JS实现自定义简单网页软键盘效果代码
2015/11/05 Javascript
分享两款带遮罩的jQuery弹出框
2015/12/30 Javascript
分步解析JavaScript实现tab选项卡自动切换功能
2016/01/25 Javascript
基于zepto的移动端轻量级日期插件--date_picker
2016/03/04 Javascript
js实现select二级联动下拉菜单
2020/04/17 Javascript
javascript表单处理具体实现代码(表单、链接、按钮)
2016/05/07 Javascript
浅谈jquery中使用canvas的问题
2016/10/10 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
JavaScript表单即时验证 验证不成功不能提交
2017/08/31 Javascript
Vue进度条progressbar组件功能
2018/04/17 Javascript
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
2019/05/17 Javascript
JavaScript观察者模式原理与用法实例详解
2020/03/10 Javascript
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
python打包生成的exe文件运行时提示缺少模块的解决方法
2018/10/31 Python
Pytorch在NLP中的简单应用详解
2020/01/08 Python
css3 自定义字体font-face使用介绍
2014/05/14 HTML / CSS
解决HTML5中滚动到底部的事件问题
2019/08/22 HTML / CSS
餐厅总厨求职信
2014/03/04 职场文书
任命书怎么写
2014/06/04 职场文书
2014党员学习《反腐倡廉警示教育读本》思想汇报
2014/09/13 职场文书
抄袭同学作业检讨书1000字
2014/11/20 职场文书
Mysql Show Profile
2021/04/05 MySQL
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
2021/04/17 Vue.js
python获取淘宝服务器时间的代码示例
2021/04/22 Python
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技