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 专题二 条件语句和循环语句的基础知识
Mar 19 Python
python SSH模块登录,远程机执行shell命令实例解析
Jan 12 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
Apr 17 Python
python中map的基本用法示例
Sep 10 Python
Python使用crontab模块设置和清除定时任务操作详解
Apr 09 Python
Python 中的 global 标识对变量作用域的影响
Aug 12 Python
python SocketServer源码深入解读
Sep 17 Python
python sklearn常用分类算法模型的调用
Oct 16 Python
pycharm 更改创建文件默认路径的操作
Feb 15 Python
python实现批量修改文件名
Mar 23 Python
Python爬虫过程解析之多线程获取小米应用商店数据
Nov 14 Python
django项目中使用云片网发送短信验证码的实现
Jan 19 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+oracle 分页类
2006/10/09 PHP
PHP setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
PHP提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
php用数组返回无限分类的列表数据的代码
2010/08/08 PHP
php实现获取文件mime类型的方法
2015/02/11 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
2016/03/18 PHP
Smarty保留变量用法分析
2016/05/23 PHP
浅析PHP7新功能及语法变化总结
2016/06/17 PHP
php安装ssh2扩展的方法【Linux平台】
2016/07/20 PHP
PHP微信分享开发详解
2017/01/14 PHP
PHP中类的自动加载的方法
2017/03/17 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
javascript 学习笔记(六)浏览器类型及版本信息检测代码
2011/04/08 Javascript
让你的CSS像Jquery一样做筛选的实现方法
2011/07/10 Javascript
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
全屏滚动插件fullPage.js使用实例解析
2016/10/21 Javascript
vuejs父子组件之间数据交互详解
2017/08/09 Javascript
angular.extend方法的具体使用
2017/09/14 Javascript
Egg.js 中 AJax 上传文件获取参数的方法
2018/10/10 Javascript
echarts多条折线图动态分层的实现方法
2019/05/24 Javascript
vue自定义switch开关组件,实现样式可自行更改
2019/11/01 Javascript
Vue+axios封装请求实现前后端分离
2020/10/23 Javascript
Python如何快速实现分布式任务
2017/07/06 Python
python的Crypto模块实现AES加密实例代码
2018/01/22 Python
python 实现保存最新的三份文件,其余的都删掉
2019/12/22 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
python根据字典的键来删除元素的方法
2020/08/16 Python
Python中Pyspider爬虫框架的基本使用详解
2021/01/27 Python
英国最大的独立玩具专卖店:The Entertainer
2019/09/06 全球购物
餐饮管理自我介绍信
2014/01/15 职场文书
国际经济与贸易专业求职信
2014/07/10 职场文书
向女朋友道歉的话
2015/01/20 职场文书
大学生年度个人总结
2015/02/15 职场文书
岁月神偷观后感
2015/06/11 职场文书
新年祝酒词大全
2015/08/11 职场文书
教师节作文之小学四年级
2019/09/03 职场文书