在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实现将文本转换成语音的方法
May 28 Python
Flask框架中密码的加盐哈希加密和验证功能的用法详解
Jun 07 Python
Python实现数据库并行读取和写入实例
Jun 09 Python
python模仿网页版微信发送消息功能
Feb 24 Python
Python实现将数据写入netCDF4中的方法示例
Aug 30 Python
Jacobi迭代算法的Python实现详解
Jun 29 Python
Python爬虫学习之翻译小程序
Jul 30 Python
如何为Python终端提供持久性历史记录
Sep 03 Python
python实现LRU热点缓存及原理
Oct 29 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
Mar 08 Python
利用Selenium添加cookie实现自动登录的示例代码(fofa)
May 08 Python
Python实现老照片修复之上色小技巧
Oct 16 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输出缓存(output_buffering)的深入理解
2013/06/13 PHP
PHP大小写问题:函数名和类名不区分,变量名区分
2013/06/17 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
PHP程序员学习使用Swoole的理由
2018/06/24 PHP
[JS源码]超长文章自动分页(客户端版)
2007/01/09 Javascript
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
2011/11/14 Javascript
JS仿iGoogle自定义首页模块拖拽特效的方法
2015/02/13 Javascript
js获取form的方法
2015/05/06 Javascript
JS建造者模式基本用法实例分析
2015/06/30 Javascript
AngularJS使用angular-formly进行表单验证
2015/12/27 Javascript
JS判断form内所有表单是否为空的简单实例
2016/09/09 Javascript
Bootstrap 下拉多选框插件Bootstrap Multiselect
2017/01/22 Javascript
vuejs实现标签选项卡动态更改css样式的方法
2018/05/31 Javascript
原生JS实现简单的倒计时功能示例
2018/08/30 Javascript
微信小程序实现点击空白隐藏的方法示例
2019/08/13 Javascript
vue使用@scroll监听滚动事件时,@scroll无效问题的解决方法详解
2019/10/15 Javascript
python赋值操作方法分享
2013/03/23 Python
用Python编写分析Python程序性能的工具的教程
2015/04/01 Python
Python下载网络文本数据到本地内存的四种实现方法示例
2018/02/05 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
2018/07/11 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
python2.7和NLTK安装详细教程
2018/09/19 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
python IDLE添加行号显示教程
2020/04/25 Python
利用纯css3实现的文字亮光特效的代码演示
2014/11/27 HTML / CSS
HTML5触摸事件演化tap事件介绍
2016/03/25 HTML / CSS
详解HTML5中表单验证的8种方法介绍
2016/12/19 HTML / CSS
美国著名童装品牌:OshKosh B’gosh
2016/08/05 全球购物
英国安全产品购物网站:The Safe Shop
2017/03/20 全球购物
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
Ever New美国:澳大利亚领先的女装时尚品牌
2019/11/28 全球购物
体育教育个人自荐信范文
2013/12/01 职场文书
演讲稿怎么写才完美
2014/01/02 职场文书
2015学校师德师风工作总结
2015/04/22 职场文书
python文本处理的方案(结巴分词并去除符号)
2021/05/26 Python