在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 基础教程之包和类的用法
Feb 23 Python
Python数据结构与算法之完全树与最小堆实例
Dec 13 Python
Python + selenium自动化环境搭建的完整步骤
May 19 Python
pytorch训练imagenet分类的方法
Jul 27 Python
使用Python进行目录的对比方法
Nov 01 Python
Python2和Python3.6环境解决共存问题
Nov 09 Python
Python实现爬取马云的微博功能示例
Feb 16 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
Jun 17 Python
Form表单及django的form表单的补充
Jul 25 Python
python Django编写接口并用Jmeter测试的方法
Jul 31 Python
Django 多对多字段的更新和插入数据实例
Mar 31 Python
python输出国际象棋棋盘的实例分享
Nov 26 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 cookie 作用范围?不要在当前页面使用你的cookie
2009/03/24 PHP
php计算两个日期时间差(返回年、月、日)
2014/06/19 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
2016/10/29 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
php递归函数怎么用才有效
2018/02/24 PHP
网页整体变灰白色(兼容各浏览器)实例
2013/04/21 Javascript
chrome下jq width()方法取值为0的解决方法
2014/05/26 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
javascript手风琴下拉菜单实现代码
2015/11/12 Javascript
jQuery实现图片文字淡入淡出效果
2015/12/21 Javascript
js数字舍入误差以及解决方法(必看篇)
2017/02/28 Javascript
JavaScript登录验证基础教程
2017/11/01 Javascript
浅谈mint-ui 填坑之路
2017/11/06 Javascript
js构建二叉树进行数值数组的去重与优化详解
2018/03/26 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
2019/06/05 Javascript
解决vue axios跨域 Request Method: OPTIONS问题(预检请求)
2020/08/14 Javascript
nodejs中使用worker_threads来创建新的线程的方法
2021/01/22 NodeJs
[01:02:54]完美世界DOTA2联赛PWL S2 FTD vs GXR 第一场 11.22
2020/11/26 DOTA
python实现简单购物商城
2016/05/21 Python
PyQt5每天必学之布局管理
2018/04/19 Python
利用Django-environ如何区分不同环境
2018/08/26 Python
python函数不定长参数使用方法解析
2019/12/14 Python
Python反爬虫伪装浏览器进行爬虫
2020/02/28 Python
如何打包Python Web项目实现免安装一键启动的方法
2020/05/21 Python
浅谈对python中if、elif、else的误解
2020/08/20 Python
Python绘制数码晶体管日期
2021/02/19 Python
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
英国经济型酒店品牌:Travelodge
2019/12/17 全球购物
Java里面StringBuilder和StringBuffer有什么区别
2016/06/06 面试题
关于青春的演讲稿800字
2014/08/22 职场文书
关于读书的演讲稿600字
2014/08/27 职场文书
2015秋季开学演讲稿范文
2015/07/16 职场文书
股东协议书范本2016
2016/03/21 职场文书
JavaScript严格模式不支持八进制的问题讲解
2021/11/07 Javascript
漫画「你在春天醒来」第10卷封面公开
2022/03/21 日漫