在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出现_warn_unsafe_extraction问题的方法
Mar 24 Python
深入理解python中的闭包和装饰器
Jun 12 Python
批量将ppt转换为pdf的Python代码 只要27行!
Feb 26 Python
详解PyCharm配置Anaconda的艰难心路历程
Aug 13 Python
Python产生Gnuplot绘图数据的方法
Nov 09 Python
Python Cookie 读取和保存方法
Dec 28 Python
Python Tkinter 简单登录界面的实现
Jun 14 Python
Python实现代码块儿折叠
Apr 15 Python
Python小白垃圾回收机制入门
Jun 09 Python
python tkinter实现下载进度条及抖音视频去水印原理
Feb 07 Python
python模块内置属性概念及实例
Feb 18 Python
Sentry的安装、配置、使用教程(Sentry日志手机系统)
Jul 23 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
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
PHP与MySQL开发中页面出现乱码的一种解决方法
2007/07/29 PHP
php+mysql 实现身份验证代码
2010/03/24 PHP
如何用php生成扭曲及旋转的验证码图片
2013/06/07 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
2013/07/01 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
2013/12/03 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
PHP获取对象属性的三种方法实例分析
2019/01/03 PHP
多广告投放代码 推荐
2006/11/13 Javascript
js中一维数组和二位数组中的几个问题示例说明
2014/07/17 Javascript
window.print打印指定div指定网页指定区域的方法
2014/08/04 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
JS是按值传递还是按引用传递
2015/01/30 Javascript
Angular.js中ng-include用法及多标签页面的实现方式详解
2017/05/07 Javascript
nodejs 图片预览和上传的示例代码
2017/09/30 NodeJs
Vue 2.0学习笔记之Vue中的computed属性
2017/10/16 Javascript
javascript修改浏览器title方法 JS动态修改浏览器标题
2017/11/30 Javascript
详解Angular Forms中自定义ngModel绑定值的方式
2018/12/10 Javascript
微信小程序配置服务器提示验证token失败的解决方法
2019/04/03 Javascript
vue中格式化时间过滤器代码实例
2019/04/17 Javascript
Js和VUE实现跑马灯效果
2020/05/25 Javascript
在Python中测试访问同一数据的竞争条件的方法
2015/04/23 Python
简单了解python代码优化小技巧
2019/07/08 Python
Python爬虫 bilibili视频弹幕提取过程详解
2019/07/31 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
2020/06/27 Python
Django中如何用xlwt生成表格的方法步骤
2021/01/31 Python
MATCHESFASHION.COM美国官网:英国奢侈品零售商
2018/10/29 全球购物
俄罗斯鲜花递送:AMF
2020/04/24 全球购物
护士在校生自荐信
2014/02/01 职场文书
进步之星获奖感言
2014/02/22 职场文书
党员承诺书格式
2014/05/21 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
百年校庆宣传标语口号
2015/12/26 职场文书
python中的装饰器该如何使用
2021/06/18 Python
golang实现浏览器导出excel文件功能
2022/03/25 Golang