在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正则表达式判断字符串是否是全部小写示例
Dec 25 Python
Python中字典(dict)和列表(list)的排序方法实例
Jun 16 Python
讲解Python中的递归函数
Apr 27 Python
Python数组定义方法
Apr 13 Python
利用Python中的pandas库对cdn日志进行分析详解
Mar 07 Python
python3实现UDP协议的服务器和客户端
Jun 14 Python
Python入门之三角函数atan2()函数详解
Nov 08 Python
PyQt5实现QLineEdit添加clicked信号的方法
Jun 25 Python
离线状态下在jupyter notebook中使用plotly实例
Apr 24 Python
Python模拟伯努利试验和二项分布代码实例
May 27 Python
Python Map 函数的使用
Aug 28 Python
python Protobuf定义消息类型知识点讲解
Mar 02 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 设计模式之观察者模式介绍
2012/02/22 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
Laravel实现短信注册的示例代码
2018/05/29 PHP
PDO::_construct讲解
2019/01/27 PHP
laravel多条件查询方法(and,or嵌套查询)
2019/10/09 PHP
静态页面的值传递(三部曲)
2006/09/25 Javascript
JavaScript 指导方针
2007/04/05 Javascript
window.location和document.location的区别分析
2008/12/23 Javascript
Jquery动态更改一张位图的src与Attr的使用
2013/07/31 Javascript
javascript在myeclipse中报错的解决方法
2013/10/29 Javascript
鼠标移到div,浮层显示明细,弹出层与div的上边距左边距重合(示例代码)
2013/12/14 Javascript
js(JavaScript)实现TAB标签切换效果的简单实例
2014/02/26 Javascript
JavaScript截取字符串的2个函数介绍
2014/08/27 Javascript
AngularJS内置指令
2015/02/04 Javascript
javascript制作幻灯片(360度全景图片)
2015/07/28 Javascript
第一次接触神奇的Bootstrap
2016/10/14 Javascript
Vue formData实现图片上传
2019/08/20 Javascript
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
python简单实现计算过期时间的方法
2015/06/09 Python
Python 模拟购物车的实例讲解
2017/09/11 Python
用python实现百度翻译的示例代码
2018/03/09 Python
python实现类之间的方法互相调用
2018/04/29 Python
python登录WeChat 实现自动回复实例详解
2019/05/28 Python
Django组件content-type使用方法详解
2019/07/19 Python
对python while循环和双重循环的实例详解
2019/08/23 Python
Python实现实时数据采集新型冠状病毒数据实例
2020/02/04 Python
python两种获取剪贴板内容的方法
2020/11/06 Python
Python读写锁实现实现代码解析
2020/11/28 Python
HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码
2020/04/10 HTML / CSS
Wallis官网:英国女装零售商
2020/01/21 全球购物
泰国第一在线超市:Tops
2021/02/13 全球购物
大学校园生活自我鉴定
2014/01/13 职场文书
运动会邀请函范文
2014/02/06 职场文书
七一建党节演讲稿
2014/09/11 职场文书
公司合并协议书范本
2014/09/30 职场文书
2015年安全月活动总结
2015/03/26 职场文书