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 + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
Jul 14 Python
Python命令行参数解析模块optparse使用实例
Apr 13 Python
详解Python的Django框架中的模版相关知识
Jul 15 Python
python中获得当前目录和上级目录的实现方法
Oct 12 Python
Python实现求一个集合所有子集的示例
May 04 Python
python 检查文件mime类型的方法
Dec 08 Python
python实现KNN分类算法
Oct 16 Python
Python代码需要缩进吗
Jul 01 Python
学习Python爬虫的几点建议
Aug 05 Python
解决python3.x安装numpy成功但import出错的问题
Nov 17 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
Feb 22 Python
Python3.8官网文档之类的基础语法阅读
Sep 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
PHP概述.
2006/10/09 PHP
php数组函数序列之array_values() 获取数组元素值的函数与方法
2011/10/30 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
2013/09/26 PHP
PHP+javascript制作带提示的验证码源码分享
2014/05/28 PHP
PHP中的密码加密的解决方案总结
2016/10/26 PHP
php可变长参数处理函数详解
2017/02/22 PHP
PHP+iframe模拟Ajax上传文件功能示例
2019/07/02 PHP
Laravel 前端资源配置教程
2019/10/18 PHP
javascript 闭包疑问
2010/12/30 Javascript
模仿百度三维地图的js数据分享
2011/05/12 Javascript
javascript打印html内容功能的方法示例
2013/11/28 Javascript
使用VS开发 Node.js指南
2015/01/06 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
javascript中利用柯里化函数实现bind方法
2016/04/29 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
2018/05/04 Javascript
vue watch关于对象内的属性监听
2019/04/22 Javascript
vue 通过base64实现图片下载功能
2020/12/19 Vue.js
python计算两个矩形框重合百分比的实例
2018/11/07 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
python pandas库的安装和创建
2019/01/10 Python
django-初始配置(纯手写)详解
2019/07/30 Python
jupyter notebook 添加kernel permission denied的操作
2020/04/21 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
Python爬虫+Tkinter制作一个翻译软件的示例
2021/02/20 Python
英国汽车和货车租赁网站:Hertz英国
2016/09/02 全球购物
MAC Cosmetics巴西官方网站:M·A·C彩妆
2019/04/18 全球购物
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
护理专业毕业生推荐信
2013/10/31 职场文书
会计电算化毕业生自荐信
2014/03/03 职场文书
毕业自我鉴定书
2014/03/24 职场文书
2015年元旦文艺汇演主持词
2014/03/26 职场文书
放飞梦想演讲稿600字
2014/08/26 职场文书
2014年团员学习十八大思想汇报
2014/09/13 职场文书
公司离职证明范本
2014/10/17 职场文书
浅谈MySQL中的六种日志
2022/03/23 MySQL