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 27 Python
使用Python的判断语句模拟三目运算
Apr 24 Python
Python编程入门之Hello World的三种实现方式
Nov 13 Python
详解常用查找数据结构及算法(Python实现)
Dec 09 Python
python中关于for循环的碎碎念
Jun 30 Python
Pycharm 创建 Django admin 用户名和密码的实例
May 30 Python
基于python绘制科赫雪花
Jun 22 Python
Python 将Matrix、Dict保存到文件的方法
Oct 30 Python
python多进程控制学习小结
Oct 31 Python
Python发送手机动态验证码代码实例
Feb 28 Python
Python+Appium实现自动化测试的使用步骤
Mar 24 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
Jun 10 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调用MsSQL存储过程使用内置RETVAL获取过程中的return值
2013/07/03 PHP
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
PHP设计模式之装饰者模式代码实例
2015/05/11 PHP
PHP中异常处理的一些方法整理
2015/07/03 PHP
Yii2实现同时搜索多个字段的方法
2016/08/10 PHP
PHP基于面向对象实现的留言本功能实例
2018/04/04 PHP
JS应用之禁止抓屏、复制、打印
2008/02/21 Javascript
JS实现的用来对比两个用指定分隔符分割的字符串是否相同
2014/09/19 Javascript
js实现二代身份证号码验证详解
2014/11/20 Javascript
javascript实现全角与半角字符的转换
2015/01/07 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
jQuery图片特效插件Revealing实现拉伸放大
2015/04/22 Javascript
vue 对axios get pust put delete封装的实例代码
2020/01/05 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
[03:15]DOTA2-DPC中国联赛1月22日Recap集锦
2021/03/11 DOTA
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
Python利用Nagios增加微信报警通知的功能
2016/02/18 Python
详解Python中最难理解的点-装饰器
2017/04/03 Python
Python异常对代码运行性能的影响实例解析
2018/02/08 Python
详解python实现线程安全的单例模式
2018/03/05 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
2019/05/15 Python
用 Django 开发一个 Python Web API的方法步骤
2020/12/03 Python
解决pytorch下出现multi-target not supported at的一种可能原因
2021/02/06 Python
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
乐高西班牙官方商店:LEGO Shop ES
2019/12/01 全球购物
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
造型师求职自荐信
2013/09/27 职场文书
大学生的四年学习自我评价
2013/12/13 职场文书
公司离职证明范本
2014/01/13 职场文书
联谊活动策划书
2014/01/26 职场文书
劳动竞赛口号
2014/06/16 职场文书
小学课外阅读总结
2014/07/09 职场文书
大学生党性分析材料
2014/12/19 职场文书
收费员岗位职责
2015/02/14 职场文书
课改心得体会范文
2016/01/25 职场文书