在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运行效率的方法之间的对比
Apr 03 Python
Python下Fabric的简单部署方法
Jul 14 Python
python 迭代器和iter()函数详解及实例
Mar 21 Python
详解Python pygame安装过程笔记
Jun 05 Python
Python分治法定义与应用实例详解
Jul 28 Python
django 中QuerySet特性功能详解
Jul 25 Python
Python imageio读取视频并进行编解码详解
Dec 10 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
Dec 22 Python
IDLE下Python文件编辑和运行操作
Apr 25 Python
opencv 查找连通区域 最大面积实例
Jun 04 Python
python如何安装下载后的模块
Jul 03 Python
用Python监控你的朋友都在浏览哪些网站?
May 27 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
mysql5写入和读出乱码解决
2006/11/25 PHP
destoon设置自定义搜索的方法
2014/06/21 PHP
Document 对象的常用方法
2009/07/31 Javascript
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
关于jQuery object and DOM element
2013/04/15 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
jquery解析xml字符串示例分享
2014/03/25 Javascript
让alert不出现弹窗的两种方法
2014/05/18 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
2015/11/30 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
深入浅析JavaScript中数据共享和数据传递
2016/04/25 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
2017/02/22 Javascript
微信小程序 自定义Toast实例代码
2017/06/12 Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
2018/07/30 Javascript
浅谈vux之x-input使用以及源码解读
2018/11/04 Javascript
Python标准库之sqlite3使用实例
2014/11/25 Python
python使用线程封装的一个简单定时器类实例
2015/05/16 Python
python文件操作之目录遍历实例分析
2015/05/20 Python
Django的信号机制详解
2017/05/05 Python
python多进程中的内存复制(实例讲解)
2018/01/05 Python
Python之多线程爬虫抓取网页图片的示例代码
2018/01/10 Python
解决Django的request.POST获取不到内容的问题
2018/05/28 Python
Ubuntu下Python2与Python3的共存问题
2018/10/31 Python
pytorch自定义初始化权重的方法
2019/08/17 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
Etam德国:内衣精品店
2019/08/25 全球购物
Linux中如何用命令创建目录
2016/12/02 面试题
自荐信要包含哪些内容
2013/11/06 职场文书
保护动物倡议书
2014/04/15 职场文书
2015医德医风个人工作总结
2015/04/02 职场文书
学习党史心得体会2016
2016/01/23 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书