在Django框架中伪造捕捉到的URLconf值的方法


Posted in Python onJuly 18, 2015

比如说你有匹配某个模式的一堆视图,以及一个并不匹配这个模式但视图逻辑是一样的URL。 这种情况下,你可以通过向同一个视图传递额外URLconf参数来伪造URL值的捕捉。

例如,你可能有一个显示某一个特定日子的某些数据的应用,URL类似这样的:

/mydata/jan/01/
/mydata/jan/02/
/mydata/jan/03/
# ...
/mydata/dec/30/
/mydata/dec/31/

这太简单了,你可以在一个URLconf中捕捉这些值,像这样(使用命名组的方法):

urlpatterns = patterns('',
  (r'^mydata/(?P<month>\w{3})/(?P<day>\d\d)/$', views.my_view),
)

然后视图函数的原型看起来会是:

def my_view(request, month, day):
  # ....

这种解决方案很直接,没有用到什么你没见过的技术。 当你想添加另外一个使用 my_view 视图但不包含month和/或者day的URL时,问题就出现了。

比如你可能会想增加这样一个URL, /mydata/birthday/ , 这个URL等价于 /mydata/jan/06/ 。这时你可以这样利用额外URLconf参数:

urlpatterns = patterns('',
  (r'^mydata/birthday/$', views.my_view, {'month': 'jan', 'day': '06'}),
  (r'^mydata/(?P<month>\w{3})/(?P<day>\d\d)/$', views.my_view),
)

在这里最帅的地方莫过于你根本不用改变你的视图函数。 视图函数只会关心它 获得 了 参数,它不会去管这些参数到底是捕捉回来的还是被额外提供的。month和day

Python 相关文章推荐
跟老齐学Python之玩转字符串(2)
Sep 14 Python
利用Python的装饰器解决Bottle框架中用户验证问题
Apr 24 Python
在Python中操作列表之List.pop()方法的使用
May 21 Python
Python Web框架Tornado运行和部署
Oct 19 Python
浅谈Python处理PDF的方法
Nov 10 Python
用于业余项目的8个优秀Python库
Sep 21 Python
Dlib+OpenCV深度学习人脸识别的方法示例
May 14 Python
画pytorch模型图,以及参数计算的方法
Aug 17 Python
opencv3/C++图像像素操作详解
Dec 10 Python
django序列化serializers过程解析
Dec 14 Python
如何利用Python 进行边缘检测
Oct 14 Python
OpenCV实现常见的四种图像几何变换
Apr 01 Python
Django中传递参数到URLconf的视图函数中的方法
Jul 18 #Python
在Django的URLconf中使用命名组的方法
Jul 18 #Python
在Django的URLconf中使用多个视图前缀的方法
Jul 18 #Python
在Django的URLconf中进行函数导入的方法
Jul 18 #Python
在Django的form中使用CSS进行设计的方法
Jul 18 #Python
在Django的视图中使用form对象的方法
Jul 18 #Python
详解Django中的form库的使用
Jul 18 #Python
You might like
php定时删除文件夹下文件(清理缓存文件)
2013/01/23 PHP
解决File size limit exceeded 错误的方法
2013/06/14 PHP
10个值得深思的PHP面试题
2016/11/14 PHP
js单独获取一个checkbox看其是否被选中
2014/09/22 Javascript
jquery插件validation实现验证身份证号等
2015/06/04 Javascript
JS模式之简单的订阅者和发布者模式完整实例
2015/06/30 Javascript
百度地图API之本地搜索与范围搜索
2015/07/30 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
2016/06/07 Javascript
利用jquery去掉时光轴头尾部线条的方法实例
2017/06/16 jQuery
JS实现静态页面搜索并高亮显示功能完整示例
2017/09/19 Javascript
Angular实现的简单定时器功能示例
2017/12/28 Javascript
jQuery实现的鼠标响应缓冲动画效果示例
2018/02/13 jQuery
Node.Js生成比特币地址代码解析
2018/04/21 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
2018/10/19 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
[01:28:56]2014 DOTA2华西杯精英邀请赛 5 24 CIS VS DK
2014/05/26 DOTA
[59:07]海涛为你详解DOTA2新版本“贤哲秘契”
2014/11/22 DOTA
使用python将mdb数据库文件导入postgresql数据库示例
2014/02/17 Python
在Python中使用元类的教程
2015/04/28 Python
基于Django的ModelForm组件(详解)
2017/12/07 Python
对Python中小整数对象池和大整数对象池的使用详解
2019/07/09 Python
python每天定时运行某程序代码
2019/08/16 Python
Django项目创建及管理实现流程详解
2020/10/13 Python
python使用dlib进行人脸检测和关键点的示例
2020/12/05 Python
python中二分查找法的实现方法
2020/12/06 Python
利用CSS3实现文本框的清除按钮相关的一些效果
2015/06/23 HTML / CSS
财产保全担保书范文
2014/04/01 职场文书
学生个人评语大全
2015/01/04 职场文书
上课讲话检讨书范文
2015/05/07 职场文书
2015年党建工作目标责任书
2015/05/08 职场文书
预备党员入党感想
2015/08/10 职场文书
幼儿园教师教育随笔
2015/08/14 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
2021/05/24 Python
详解Oracle数据库中自带的所有表结构(sql代码)
2021/11/20 Oracle